Box<T>
compile-time borrow
단일 소유자가 값을 힙에 두고, 대여 규칙은 컴파일 타임에 검사됩니다.
RefCell<T>는 컴파일 타임 대신 런타임에 대여 규칙을
확인해, 불변 API 안에서도 내부 값을 바꿀 수 있게 합니다.
Box<T>compile-time borrow
단일 소유자가 값을 힙에 두고, 대여 규칙은 컴파일 타임에 검사됩니다.
Rc<T>shared immutable
여러 소유자가 같은 값을 읽지만, 기본적으로 가변 접근은 제공하지 않습니다.
RefCell<T>borrow / borrow_mut
단일 소유 내부에서 런타임 대여 상태를 추적해 불변 겉모습과 내부 변경을 함께 둡니다.
borrow와 borrow_mut 둘 다 시작할 수 있습니다.
여러 Ref<T>가 동시에 존재할 수 있습니다.
하나의 RefMut<T>가 있는 동안 다른 대여는 막힙니다.
두 번째 가변 대여처럼 충돌이 나면 런타임에 패닉이 납니다.
Rc<RefCell<T>>
여러 소유자가 같은 값을 공유하고, 필요할 때 내부 값을 바꿉니다.
목 객체&self 메서드 안에서 호출 기록 같은 내부 상태를 저장합니다.
검사가 늦어지고 약간의 런타임 비용이 있지만 더 유연한 구조를 허용합니다.