CodeBlanks Logo Icon CodeBlanks

String dilimleri

&str dilimleriyle bir string'in bir bölümüne referans verirsin.

String dilimleri

Dilim (slice), bir koleksiyonun ardışık bir bölümüne referanstır; sahipliği almaz. String dilimi &str türündedir ve bayt aralığıyla alınır:

let s = String::from("merhaba dünya");
let ilk = &s[0..7];     // "merhaba"
let son = &s[8..];      // "dünya"
println!("{ilk} / {son}");

Aralık bayt konumlarıdır, karakter değil. "ü" iki bayt yer kaplar; bu yüzden "dünya" 6 bayttır.

Dilim neden güvenli?

Dilim kaynağı ödünç aldığı için, dilim yaşarken kaynak değiştirilemez:

let mut s = String::from("rust dili");
let kelime = &s[0..4];
// s.clear();          // hata E0502: kelime hâlâ kullanılacak
println!("{kelime}");

Böylece "kaynağı silinmiş bir parçayı gösteren indeks" hatası derlemede yakalanır. Dize sabitleri ("merhaba") de aslında programın içine gömülü bir &str dilimidir.

Uygulama İki parça

let s = String::from("rust dili"); için &s[0..4] ve &s[5..] dilimlerini al, aralarına | koyarak yazdır.

Başlangıç kodu

main.rs
fn main() {
    // buraya yaz
}

Örnek çözüm

main.rs
fn main() {
    let s = String::from("rust dili");
    let a = &s[0..4];
    let b = &s[5..];
    println!("{}|{}", a, b);
}

Beklenen çıktı

rust|dili

Soru ve cevaplar

Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.

1 <code>let s = String::from("çay"); let x = &amp;s[0..1];</code> ne olur?

  • Derleme hatası
  • x = ""
  • Çalışma anında panic: 1 karakter sınırı değil Doğru cevap
  • x = "ç"

Açıklama: "ç" iki bayttır; 1. bayt bir karakterin ortasına düşer ve dilimleme panic verir.

2 İlk dört bayt

Soru
let s = String::from("rust dili");
let ilk = &s[____];
Cevap
let s = String::from("rust dili");
let ilk = &s[0..4];

Açıklama: 0..4 aralığı 0, 1, 2, 3 baytlarını alır: "rust".

3 İfade ve sonuç

Kavram Anlamı
&s[0..7] "merhaba"
&s[8..] "dünya"
"çay"[0..1] Panic
"dünya".len() 6

Başlangıç bölümündeki tüm dersler

16 Proje: Yapılacaklar listesi

  1. Görev modeli
  2. Ekleme
  3. Listeleme
  4. İşaretleme
  5. Komut okuma