필드가 모두 Send면 구조체도 대체로 Send
대부분의 기본 타입과 그 조합은 소유권을 다른 스레드로 옮길 수 있습니다.
Send는 이동, Sync는 공유 참조를 판정한다
두 트레이트는 메서드가 없는 표식이지만, thread::spawn과
공유 상태 타입이 값의 스레드 경계를 판단할 때 핵심 근거가 됩니다.
Send면 구조체도 대체로 Send대부분의 기본 타입과 그 조합은 소유권을 다른 스레드로 옮길 수 있습니다.
&T: Send이면 T: Sync불변 참조를 여러 스레드가 안전하게 나눌 수 있으면 타입 자체가 공유 참조에 적합합니다.
Arc<T>는 원자적으로 카운트를 바꾸므로
Rc<T> 대신 스레드 경계를 건널 수 있습니다.
Rc<T>는 Send도 Sync도 아님참조 카운트 변경이 스레드 안전하지 않아 여러 스레드가 동시에 건드리면 카운트가 틀어질 수 있습니다.
RefCell<T> 계열은 단일 스레드 내부 가변성에는
좋지만 공유 스레드 기준에는 맞지 않습니다.
컴파일러가 자동 판정하지 못하는 동시성 타입을 만들 때는 19장의 unsafe 코드 지식이 필요합니다.
채널의 값 이동, Arc<Mutex<T>> 공유 상태,
Tokio 태스크 이동은 모두 같은 질문으로 돌아옵니다. 이 값은 옮겨도
되는가, 이 참조는 나눠도 되는가를 타입이 먼저 답합니다.