static

Statik değişkenler programın tüm yürütmesi (execution) boyunca yaşayacak ve bu nedenle taşınmayacaklar (not move):

static BANNER: &str = "RustOS 3.14'e Hoş Geldiniz";

fn main() {
    println!("{BANNER}");
}

Rust RFC Kitabında belirtildiği gibi, statik kullanımı satır içi (inline) özelliği vermez ve gerçek bir ilişkili bellek konumuna sahiptir. Bu, emniyetsiz (unsafe) ve gömülü (embedded) kod için yararlıdır ve değişken, program yürütmesinin tamamı boyunca yaşar. Global kapsamlı (globally-scoped) bir değerin nesne kimliğine (object identity) ihtiyaç duyması için bir nedeni olmadığında, genellikle const tercih edilir.

This slide should take about 5 minutes.
  • statik, C++’daki değiştirilebilir olan global değişkenlere benzer.
  • static, Mutex<T> gibi iç değişebilirliğe (interior mutability) sahip türlerin gerektirdiği şekilde bellekteki bir adres ve durumu nesneye kimlik olarak sağlar.

Daha Fazlasını Keşfedin

Çünkü static değişkenlere herhangi bir iş parçacığından (thread) erişilebildiğinden, bunların Sync olması gerekir. İç değişebilirlik (Interior mutability) Mutex, atomik veya benzer yöntemlerle mümkündür.

İlk kullanımda ilklendirmeyi (initialization) desteklemek için static içinde OnceLock kullanmak yaygındır. OnceCell, Sync olmadığı için bu bağlamda kullanılamaz.

İş parçacığı için yerel (thread-local) veriler std::thread_local makrosu ile oluşturulabilir.