use std::sync::Arc;
use std::thread;

fn main() {
    let data = Arc::new(vec![1, 2, 3]);

    for _ in 0..10 {
        let data_clone = Arc::clone(&data);
        thread::spawn(move || {
            // 잘못된 접근으로 인해 데이터 경합 발생 가능성
            println!("{:?}", data_clone);
        });
    }
}

data clone에 대해 변경을 전혀 시도하지 않기 때문에 경합 그딴거 안일어난단다. 만약 변경을 시도하면 컴파일 에러가 난단다. 낄낄낄 오히려 러스트의 안정성을 더욱 확인시켜주는 꼴이구나.

- dc official App