Rc<T> (Reference Counting) ermoglicht geteiltes Eigentum an Heap-allokierten Daten in Single-Thread-Kontexten. Anders als Box<T>, wo Eigentum einzigartig ist, erlaubt Rc<T> mehreren Teilen Ihres Codes, dieselben Daten zu besitzen. Die strong_count() Methode gibt zurück, wie viele Rc-Referenzen auf die Daten zeigen. Wenn die letzte Rc verworfen wird, werden die inneren Daten automatisch deallokiert. Rc<T> bietet nur gemeinsamen (unveranderlichen) Zugriff; fur veranderliches geteiltes Eigentum wurden Sie RefCell<T> innerhalb von Rc<T> benotigen. Dies ist nutzlich für Caches, Konfigurationsobjekte oder Daten, auf die von mehreren Stellen zugegriffen werden muss.
use std::rc::Rc;#[derive(Debug)]struct Config {name: String,version: String,}fn main() {let config = Rc::new(Config {name: "MyApp".to_string(),version: "1.0.0".to_string(),});println!("Original ref count: {}", Rc::strong_count(&config));{let config_clone = Rc::clone(&config);println!("After clone ref count: {}", Rc::strong_count(&config_clone));println!("Config in scope: {:?}", config_clone);}println!("After scope ref count: {}", Rc::strong_count(&config));let another_clone = Rc::clone(&config);println!("Final ref count: {}", Rc::strong_count(&another_clone));drop(another_clone);println!("After drop ref count: {}", Rc::strong_count(&config));}