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.
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.