String ve &str dönüşümü
- Rust kursu
- Başlangıç
- Ders 100/115
- 4 dk
String ile &str arası dönüşüm yöntemlerini öğrenirsin.
String ve &str dönüşümü
String sahip olunan, büyüyebilen metindir; &str ise bir metne ödünç bakış. Dönüşümler:
let a: String = String::from("rust");
let b: String = "rust".to_string();
let c: String = "rust".to_owned();
let d: &str = &a; // deref coercion
let e: &str = a.as_str();
let f: String = format!("{a}-{}", 2024);&str'den String'e geçiş yeni bellek ayırır; tersi ücretsizdir.
Birleştirme
+ operatörü sol taraftaki String'in sahipliğini alır ve sağda &str ister:
let a = String::from("Merhaba");
let b = String::from("dünya");
let c = a + " " + &b; // a taşındı, b ödünç verildi
// println!("{a}"); // hata: a taşındı
println!("{c} {b}");Birden fazla parçayı birleştirirken format! daha okunaklıdır ve hiçbir değeri taşımaz. Var olan bir String'e eklemek için push_str kullanılır.
Uygulama İki çağrı
fn selamla(ad: &str) -> String yaz ve format!("Merhaba {ad}") döndürsün. Onu bir String (&s) ve bir sabit metin ("Can") ile çağır; sonuçları | ile ayırarak yazdır.
Başlangıç kodu
fn main() {
// buraya yaz
}Örnek çözüm
fn selamla(ad: &str) -> String {
format!("Merhaba {ad}")
}
fn main() {
let s = String::from("Ada");
println!("{}|{}", selamla(&s), selamla("Can"));
}Beklenen çıktı
Merhaba Ada|Merhaba Can
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 Bir fonksiyon metni yalnızca okuyacaksa parametre türü ne olmalı?
- &str Doğru cevap
- String
- &String
- &mut String
Açıklama: &str hem String'den (&s ile) hem sabit metinden kabul eder; &String yalnızca String kabul eder.
2 Ödünç dilim al
let a = String::from("rust");
let e: &str = a.____();
let a = String::from("rust");
let e: &str = a.as_str();
Açıklama: as_str String'in içeriğine &str olarak bakar; kopya yapmaz.
3 İfade ve sonucun türü
| Kavram | Anlamı |
|---|---|
"a".to_string() |
String |
s.as_str() |
&str |
format!("{x}") |
String (yeni) |
a + &b |
String (a taşınır) |