Vec<String> 직접 보관
&self 뒤의 sent_messages에
push하려 하면 가변 대여가 필요해 E0596이 납니다.
&self 안에서 기록용 상태만 바꾼다
Messenger::send의 시그니처는 그대로 두고,
MockMessenger 내부의 호출 기록만
RefCell로 런타임 대여합니다.
Vec<String> 직접 보관
&self 뒤의 sent_messages에
push하려 하면 가변 대여가 필요해 E0596이 납니다.
RefCell<Vec<String>>
외부에서는 여전히 불변 참조처럼 보이지만,
borrow_mut가 짧은 가변 접근을 열어 기록을 남깁니다.
set_value(80)75% 이상 조건이 되어 경고 전송 경로가 실행됩니다.
send(&self)트레이트 계약 때문에 목 객체도 불변 참조로 호출됩니다.
borrow_mut()기록 벡터에 대한 단독 가변 대여를 런타임에 확인합니다.
push(msg)전송 대신 메시지를 저장해 테스트가 볼 수 있는 흔적을 남깁니다.
borrow().len()단언에서는 불변 대여로 기록 개수를 확인합니다.
RefCell은 트레이트 API를 우회하는 장치가 아니라, 같은
대여 규칙을 실행 중에 검사하도록 미루는 장치입니다. 그래서 테스트는
유연해지지만 잘못 겹친 대여는 패닉으로 드러납니다.