RUST · INTERIOR

RefCell 런타임 borrow 카운터

RefCell은 컴파일 타임 대신 런타임에 borrow 규칙을 검사해 내부 가변 변경을 런타임 borrow 카운터 뒤로 옮깁니다.

RefCell 런타임 borrow 카운터 구조

RefCell
borrow()공유 대여 카운터 증가
borrow_mut()가변 대여는 단독이어야 함
drop guardRef/RefMut이 사라지며 카운터 감소
panic규칙 위반은 런타임 실패
borrow()borrow_mut()drop guardpanic

RefCell 런타임 borrow 카운터 기준

점검
내부 가변성불변 참조 안에서도 규칙을 지키며 값을 바꿀 수 있습니다.
테스트 목불변 인터페이스를 유지한 채 Mock 객체 안쪽에 호출 기록을 누적할 때 씁니다.
단일 스레드RefCell은 Sync가 아니므로 스레드 공유용이 아닙니다.
작은 범위RefMut guard의 생존 범위를 짧게 유지해야 합니다.