0Pricing
Learn Rust Coding · Ders

Yaşam Süreleri Neden Gerekli

Sarkan başvuruları önleme

Yaşam Süreleri Neden Gerekli, CoddyKit'te ücretsiz bir Learn Rust Coding dersidir. Bu, 4 dersinin 1. dersidir. Aşağıdan dersin tamamını ücretsiz okuyabilir, sonra tarayıcıda yerleşik kod editörü ve 7/24 yapay zeka koçu ile uygulamalı olarak pratik yapabilirsin. Bu, Learn Rust Coding öğrenme yolunun bir parçasıdır ve ilerlemeniz web ve CoddyKit uygulaması arasında senkronize olur. Learn Rust Coding kursu toplamda 4 dersten oluşur.

Başvurular Geçerli Kalmalıdır

Bir başvuru, sahibi olmadığı veriyi ödünç alır. Rust, verinin en az başvuru kadar uzun süre yaşamasını garanti etmelidir. Yaşam süreleri, derleyicinin bunu izleme yöntemidir.

Görevleri sarkan başvuruları önlemektir.

Sarkan Başvuru Nedir?

Sarkan bir başvuru, serbest bırakılmış belleği gösterir. Denetimlerin olmadığı dillerde böyle bir başvuruyu kullanmak çökmelere veya güvenlik hatalarına neden olur. Rust bu tür kodların derlenmesini reddeder.

Ödünç Denetleyicisi İş Başında

Bu kod, kapsam dışına çıkan bir değere başvuru oluştururdu. Rust bunu derleme zamanında reddeder. Yaşam süreleri, karar vermek için kullandığı kuraldır.

fn main() {
    let r;
    {
        let x = 5;
        r = &x;
        println!("inside: {}", r);
    }
    // using r here would be a dangling reference
    println!("done");
}

Kapsamlar Yaşam Sürelerini Tanımlar

Bir değerin yaşam süresi, geçerli olduğu aralıktır; genellikle kapsamıdır. Bir başvuru, gösterdiği değerden daha uzun yaşamamalıdır.

Burada hem x hem de başvuru aynı kapsamda yaşar; bu nedenle sorun yoktur.

fn main() {
    let x = 5;
    let r = &x;
    println!("x is {}, r is {}", x, r);
}

Başvuruları Döndürme

Bir başvuru döndüren işlev, çağıran taraf için geçerliliğini koruyan bir başvuru döndürmelidir. Yerel bir değişkene başvuru döndüremezsiniz; çünkü işlev sona erdiğinde bu değişken yok olur.

Bir Girdiden Ödünç Alınan Başvuruyu Döndürme

Yapabileceğiniz şey, bir girdiden ödünç alan bir başvuru döndürmektir. Sonuç, o girdi geçerli olduğu sürece geçerlidir. Ömür açıklamaları tam olarak bunu tanımlar.

fn first_word(s: &str) -> &str {
    let bytes = s.as_bytes();
    for (i, &b) in bytes.iter().enumerate() {
        if b == b' ' {
            return &s[..i];
        }
    }
    s
}

fn main() {
    let sentence = String::from("hello world");
    println!("{}", first_word(&sentence));
}

Ömürler Yalnızca Derleme Zamanındadır

Ömürler tamamen derleme zamanı kavramıdır. Çalışma zamanı maliyeti yoktur ve yalnızca ödünç alma denetleyicisinin bellek güvenliğini doğrulamasını sağlamak için vardır.

Sahiplik ve Ömürler Birlikte

Sahiplik, bir değeri kimin serbest bırakacağını belirler; ömürler ise o değere yapılan ödünç almaların ne kadar süre yaşayabileceğini belirler. Birlikte, Rust'ın çöp toplayıcı olmadan güvenliği garanti etmesini sağlarlar.

fn main() {
    let data = vec![1, 2, 3];
    let view = &data[0..2];
    println!("{:?}", view);
    // data still owns the vector; view just borrows part of it
    println!("{:?}", data);
}

İmzalar Neden İsimler İçerir

Bir işlev birden fazla başvuru aldığında, derleyici bazen bunların ömürlerinin nasıl ilişkili olduğunu belirleyemez. Bu durumda ilişkileri açıklığa kavuşturmak için ömür açıklamaları eklersiniz.

Sonraki derste bu söz dizimi ele alınacaktır.

Kazanım

Ömürler sayesinde bir hata kategorisinin tamamı — serbest bırakılmış belleği kullanma, sarkan işaretçiler ve yineleyici geçersizliği — derlenemez. Bellek güvenliğiyle birlikte C benzeri hız elde edersiniz.

Zihinsel Model

Ömrü, verilerin canlı kaldığı sürenin üzerindeki bir etiket olarak düşünün. Bir başvuru şu kısıtı taşır: Kaynağım canlı olduğu sürece geçerliyim. Ödünç alma denetleyicisi bunu zorunlu kılar.

Kısa Kontrol

Ömürlerin neden var olduğunu anlayıp anlamadığınızı sınayın.

Özet

Ömürlerin neden var olduğunu öğrendiniz:

  • Başvurular, ödünç aldıkları veriden daha uzun yaşamamalıdır
  • Ömürler, derleme zamanında sarkan başvuruları önler
  • Yalnızca derleme zamanında vardırlar ve çalışma zamanı maliyeti oluşturmazlar
  • Bellek güvenliğini çöp toplayıcı olmadan sağlamak için sahiplikle birlikte çalışırlar

Sıkça Sorulan Sorular

“Yaşam Süreleri Neden Gerekli” dersi ücretsiz mi?

Evet — “Yaşam Süreleri Neden Gerekli” dersin tüm metni burada web'de ücretsiz olarak okunabilir. Etkileşimli olarak pratik yapmak (yerleşik kod editörü ve 7/24 yapay zeka koçu) ve Learn Rust Coding kursunun geri kalanını açmak için CoddyKit PRO'ya yükselt. Learn Rust Coding kursu toplamda 4 dersten oluşur.

“Yaşam Süreleri Neden Gerekli” dersinde ne öğreneceğim?

Sarkan başvuruları önleme Learn Rust Coding ile uygulamalı kodu tarayıcıda doğrudan çalıştırarak pratik yaparsın ve 7/24 yapay zeka koçu dersi çalışırken sorularını yanıtlar.

Learn Rust Coding öğrenmeye başlamak için deneyim gerekli mi?

Önceden deneyim gerekmez. CoddyKit'te Learn Rust Coding, başlangıçtan ileri seviyeye kadar yapılandırıldığı için buradan başlayabilir veya başından başlayıp kendi hızında ilerleme yapabilirsin. Bu, 4 dersinin 1. dersidir.

“Yaşam Süreleri Neden Gerekli” dersi ne kadar sürer?

Çoğu CoddyKit dersi yaklaşık 5–10 dakika sürer. Her biri kısa ve etkileşimli olduğu için sabit ilerleme yaparsın ve web ile uygulama arasında tam olarak bıraktığın yerden devam edebilirsin.

Bu Learn Rust Coding dersinde kod yazıp çalıştırabilir miyim?

Evet. Her Learn Rust Coding dersi yerleşik bir kod editörü içerir, bu sayede tarayıcıda gerçek kod yazıp çalıştırabilir ve anlık yapay zeka geri bildirimi alırsın — yerel kurulum gerekli değildir.

Bu kursun tüm dersleri

  1. Yaşam Süreleri Neden Gerekli
  2. Yaşam Süresi Açıklamaları
  3. Yapılarda Yaşam Süreleri
  4. Çıkarma Kuralları
← Learn Rust Coding Sayfasına Dön