Yapılarda Yaşam Süreleri
Ödünç alınan alanlar
Yapılarda Yaşam Süreleri, CoddyKit'te ücretsiz bir Learn Rust Coding dersidir. Bu, 4 dersinin 3. 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.
Yapılar Ödünç Alabilir
Çoğu yapı verilerinin sahibi olur. Ancak bir yapı, sahibi olmadığı verilere bir başvuru da tutabilir. Böyle olduğunda yapının bir ömür parametresine ihtiyacı vardır.
Bu, yapının ödünç alınan veriden daha uzun yaşamamasını garanti eder.
Bir Yapıda Ömür Bildirme
Ömrü yapı adından sonra köşeli ayraçlar içinde ekleyin ve ardından başvuru alanında kullanın. Bu, yapının o başvurudan daha uzun yaşayamayacağını belirtir.
struct Excerpt<'a> {
text: &'a str,
}
fn main() {
let novel = String::from("Call me Ishmael. Some years ago...");
let first = novel.split('.').next().unwrap();
let e = Excerpt { text: first };
println!("{}", e.text);
}Eklediği Kısıt
Açıklama, Excerpt örneğinin yalnızca ödünç aldığı dize canlı olduğu sürece geçerli olduğu anlamına gelir. Derleyici, yapının kullanıldığı her yerde bunu zorunlu kılar.
Ödünç Alan Yapılardaki Yöntemler
Bu tür bir yapıdaki yöntemler de impl başlığında ömrü taşır. Ömür çıkarımı sayesinde çoğu zaman yöntem gövdesindeki ömürleri yazmayabilirsiniz; bu konu sonraki derste ele alınacaktır.
struct Excerpt<'a> { text: &'a str }
impl<'a> Excerpt<'a> {
fn announce(&self) -> &str {
println!("Attention!");
self.text
}
}
fn main() {
let s = String::from("hello world");
let e = Excerpt { text: &s };
println!("{}", e.announce());
}Neden Verinin Doğrudan Sahibi Olmayalım
Sahip olmak (String kullanmak) daha basittir ve genellikle tercih edilir. Ödünç alma, büyük verileri kopyalamaktan kaçınır ve ayrıştırıcılar ile mevcut arabelleklerin içine bakan görünümler için yararlıdır.
Yapılarda ömürleri yalnızca ödünç almanın gerçekten yarar sağladığı durumlarda kullanın.
Bir Ayrıştırıcı Görünümü Örneği
Bir kaynak dize içindeki dilimleri tutan yapı, klasik bir kullanım örneğidir. Özgün arabelleği kopyalamadan okur.
struct Token<'a> {
word: &'a str,
}
fn main() {
let line = String::from("let x = 5");
let tokens: Vec<Token> = line.split_whitespace().map(|w| Token { word: w }).collect();
for t in &tokens {
println!("token: {}", t.word);
}
}Birden Çok Başvuru Alanı
Bir yapı birden fazla başvuru tutabilir. Geçerlilik ilişkilerine bağlı olarak tek bir ömrü paylaşabilir veya farklı ömürler kullanabilirler.
struct Pair<'a> {
left: &'a str,
right: &'a str,
}
fn main() {
let a = String::from("foo");
let b = String::from("bar");
let p = Pair { left: &a, right: &b };
println!("{} {}", p.left, p.right);
}Sarkan Yapı Hatası
Yapı hâlâ mevcutken ödünç alınan veri bırakılırsa derleyici kodu reddeder. Bu denetimi mümkün kılan şey ömür parametresidir.
Ödünç Alan Yapıları Döndürme
Böyle bir yapı oluşturan işlev, yapının ömrünü girdisine bağlar. Yapı, kendisine aktarılan veriden daha uzun yaşayamaz.
struct Wrap<'a> { inner: &'a str }
fn wrap<'a>(s: &'a str) -> Wrap<'a> {
Wrap { inner: s }
}
fn main() {
let text = String::from("wrapped");
let w = wrap(&text);
println!("{}", w.inner);
}Sahip Olma ve Ödünç Alma Arasındaki Tercih
Kısa kılavuz:
- Verileri bağımsız olarak saklamanız mı gerekiyor? Sahip olun (
String,Vec). - Mevcut verilere kısa ömürlü bir görünüm mü gerekiyor? Bir ömür kullanarak ödünç alın.
Zihinsel Model
'a içeren bir yapı, başkasının defterine iliştirilmiş yapışkan nota benzer: yalnızca o defter var olduğu sürece anlamlıdır. Rust, artık var olmayan bir defterdeki notu okumanızı engeller.
Kısa Kontrol
Yapılardaki ömürleri anlayıp anlamadığınızı sınayın.
Özet
Yapılardaki ömürleri öğrendiniz:
- Başvuru tutan bir yapının ömür parametresine ihtiyacı vardır
- Ömür, yapının geçerliliğini ödünç alınan veriye bağlar
- Yöntemler ömrü
implbaşlığında taşır - Ödünç alma anlamlı kopyaları önlemediği sürece sahip olmayı tercih edin
Sıkça Sorulan Sorular
“Yapılarda Yaşam Süreleri” dersi ücretsiz mi?
Evet — “Yapılarda Yaşam Süreleri” 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.
“Yapılarda Yaşam Süreleri” dersinde ne öğreneceğim?
Ödünç alınan alanlar 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 3. dersidir.
“Yapılarda Yaşam Süreleri” 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
- Yaşam Süreleri Neden Gerekli
- Yaşam Süresi Açıklamaları
- Yapılarda Yaşam Süreleri
- Çıkarma Kuralları