Reference Counting with Rc and Arc
Reference Counting with Rc and Arc
When multiple parts of a program need shared read ownership of heap memory: - Rc<T>: Single-threaded reference counting. - Arc<T>: Atomic reference counting across multiple threads.
use std::sync::Arc;
use std::thread;
fn main() {
let data = Arc::new(vec![1, 2, 3]);
let data_clone = Arc::clone(&data);
let handle = thread::spawn(move || {
println!("Thread sees: {:?}", data_clone);
});
handle.join().unwrap();
println!("Main sees: {:?}", data);
}