RefCell
여기에 포함된 unsafe 코드는 안전한 API로 감싸져 있고, 바깥쪽 타입은 여전히 불변입니다. RefCell은 대여 규칙을 런타임에 확인해 테스트 더블이나 캐시처럼 내부 상태가 필요한 경우에 쓰입니다.
내부 가변성(interior mutability)은 어떤 데이터에 대한 불변 참조자가 있을 때라도 데이터를 변경할 수 있게 해주는 러스트의 디자인 패턴입니다; 보통 이러한 동작은 대여 규칙에 의해 허용되지 않습니다. 데이터를 변경하기 위해서, 이 패턴은 데이터 구조 내에서 unsafe(안전하지 않은) 코드를 사용하고, 바깥쪽 API에서는 런타임 대여 검사를 통해 규칙을 지키게 합니다.
RefCell과 내부 가변성: 컴파일 시점 대여 검사와 런타임 대여 검사의 차이를 확인합니다.
RefCell은 컴파일 시점 대신 런타임에 대여 규칙을 검사해, 불변 참조 뒤에 숨은 내부 상태를 제한적으로 바꿀 수 있게 합니다.
여기에 포함된 unsafe 코드는 안전한 API로 감싸져 있고, 바깥쪽 타입은 여전히 불변입니다. RefCell은 대여 규칙을 런타임에 확인해 테스트 더블이나 캐시처럼 내부 상태가 필요한 경우에 쓰입니다.
내부 가변성(interior mutability)은 어떤 데이터에 대한 불변 참조자가 있을 때라도 데이터를 변경할 수 있게 해주는 러스트의 디자인 패턴입니다. 단, 규칙 위반은 컴파일 오류가 아니라 런타임 패닉으로 드러납니다.
안전하지 않은 코드는 이 규칙들을 지키고 있는지에대한 검사를 컴파일러에게 맡기는 대신 수동으로 하는 중임을 컴파일러에게 알립니다. unsafe 코드의 책임과 경계는 19장에서 더 자세히 다룹니다.