Reference Counting with Rc and Arc

Updated

October 31, 2026

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);
}