Rc / Weak

Rc와 Weak 참조 카운트 변화

Rc는 strong_count를 늘려 소유권을 공유하고, Weak는 weak_count만 늘려 값이 버려지는 것을 막지 않는다.

트리 구조에서 순환을 피하는 방식

cycle break

자식 소유

부모가 children Vec<Rc<Node>>로 자식을 소유한다.

부모 참조

자식의 parent는 Weak<Node>로 부모를 가리킨다.

upgrade

부모가 살아 있는지 Option<Rc<T>>로 확인한다.

해제 조건

strong_count가 0이면 weak가 남아도 값은 해제된다.

parent Rcchild RcdowngradeWeak parentstrong 0 drop
읽는 법

서로를 Rc로 잡으면 카운트가 0이 되지 않는다. 소유 관계와 관찰 관계를 Rc와 Weak로 나누는 것이 핵심이다.