Ömür nedir?
- Rust kursu
- Orta seviye
- Ders 13/115
- 4 dk
Ömür (lifetime) kavramının ne işe yaradığını öğrenirsin.
Ömür nedir?
Her referansın bir ömrü (lifetime) vardır: geçerli olduğu kod bölgesi. Derleyici, bir referansın gösterdiği değerden daha uzun yaşamadığını ömürleri karşılaştırarak denetler. Çoğu zaman ömürler otomatik çıkarılır ve hiç yazılmaz:
let r; // ---------+-- r'nin ömrü
{ // |
let x = 5; // -+-- x |
r = &x; // | |
} // -+ x biter
// println!("{r}"); // hata E0597: x yeterince uzun yaşamıyorÖmürler çalışma anında hiçbir şey yapmaz; yalnızca derleme anı denetimidir.
'static ömür
'static, en uzun ömürdür. Dize sabitleri ve static değişkenler bu ömre sahiptir; bu yüzden bir fonksiyondan güvenle döndürülebilirler:
fn karsilama() -> &'static str {
"merhaba"
}
static SURUM: &str = "1.0";Derleyici hata mesajlarında 'static önerse bile, çoğu zaman doğru çözüm referans yerine sahip olunan bir değer (String) döndürmektir.
Uygulama Statik metin
fn karsilama() -> &'static str yaz ve "merhaba" döndürsün. Sonucu ve uzunluğunu boşlukla yazdır.
Başlangıç kodu
fn main() {
// buraya yaz
}Örnek çözüm
fn karsilama() -> &'static str {
"merhaba"
}
fn main() {
let s = karsilama();
println!("{} {}", s, s.len());
}Beklenen çıktı
merhaba 7
Soru ve cevaplar
Dersin sorularını cevaplarıyla birlikte inceleyebilirsin. Kendini denemek istersen dersi interaktif olarak çöz.
1 <code>&'static str</code> ne anlama gelir?
- Yığında duran metin
- Global değişken
- Programın sonuna kadar geçerli bir metin referansı Doğru cevap
- Değiştirilemeyen bir String
Açıklama: Dize sabitleri programın ikili dosyasına gömülür ve her zaman geçerlidir; bu yüzden türleri &'static str'dir.
2 Statik ömür
fn karsilama() -> &____ str {
"merhaba"
}
fn karsilama() -> &'static str {
"merhaba"
}
Açıklama: Dize sabitleri programın sonuna kadar yaşar: &'static str.
3 Değer ve ömrü
| Kavram | Anlamı |
|---|---|
"merhaba" |
'static |
fn f() -> &'static str |
Sabit döndürebilir |
let x = 5; &x |
x'in kapsamı |
String::from("a") |
Sahip olunan, ömür yok |