저번의 RefCell과는 다르게 아주 심플하다


이렇게생긴 UnsafeCell하나 달고있는데

둘다 repr(transparent)라서 그냥 T랑 똑같다고 보면된다


get은 T가 Copy일때 쓸수있다 그냥 복사해서 돌려준다


set은 간단하게 바꿔치기해준다 !Sync라서 동시에 실행되지 않기에 스레드 안전하다


take는 T가 Default일때 쓸수있다 기본값이랑 바꿔치기한다

Option같은 타입에 유용





보통 이 3가지 함수를 많이 쓰는데

Cell의 의의는 제로 코스트로 interior mutability를 제공한다는것

set과 take는 안쪽값을 변경하지만 &Cell만 있으면 쓸수있고

모두 Copy와 Sync를 적절하게 사용해서 safety를 보장하는 함수들임