Rc
Rc referans sayımlı (reference-counted) bir paylaşılan göstericidir. Aynı veriye birden çok yerden referans vermeniz gerektiğinde bunu kullanın:
use std::rc::Rc; fn main() { let a = Rc::new(10); let b = Rc::clone(&a); dbg!(a); dbg!(b); }
Her Rc, güçlü (strong) ve zayıf (weak) göstericileri ve değeri içeren aynı paylaşılan veri yapısına işaret eder:
- Çok iş parçacıklı (multi-threaded) bir bağlamdaysanız
ArcveMutex’e bakın. - Düşürülecek (drop) döngüler oluşturmak için paylaşılan bir göstericiyi bir
Weakgöstericiye düşürebilirsiniz (downgrade).
This slide should take about 5 minutes.
Rc’nin sayımı, içerdiği değerin referanslar olduğu sürece geçerli olmasını sağlar.- Rust’taki
Rc, C++’dakistd::shared_ptr’e benzer. Rc::cloneucuzdur: aynı tahsise bir gösterici oluşturur ve referans sayısını artırır. Derin bir klon (deep clone) yapmaz ve genellikle koddaki performans sorunlarını ararken göz ardı edilebilir.make_mutaslında gerekirse iç değeri klonlar (“yazmada-klonla / clone-on-write”) ve değiştirilebilir (mutable) bir referans döndürür.- Referans sayısını kontrol etmek için
Rc::strong_countkullanın. Rc::downgradesize düzgün bir şekilde düşürülecek (drop) döngüler oluşturmak için zayıf referans sayımlı (weakly reference-counted) bir nesne verir (muhtemelenRefCellile kombinasyon halinde).