Cell — 내부 가변성을 제공하는 컨테이너
Cell — 내부 가변성을 제공하는 컨테이너
Cell<T>는 내부 가변성(interior mutability)을 제공하는 컨테이너 타입이에요. 공유 참조에 있는 데이터를 변경할 수 있게 해줘요.
출처: Rust 공식 문서
본문
pub struct Cell<T: ?Sized> { /* private fields */ }
Cell은 런타임 비용 없이 &Cell<T>를 통해서도 값을 변경할 수 있게 해주는 Copy 가능한 타입에 적합해요. 다만 스레드 안전성이 없어 Sync가 아니에요.
주요 메서드
pub const fn new(value: T) -> Cell<T>
pub fn set(&self, val: T)
pub fn get(&self) -> T // T: Copy
pub fn take(&self) -> T // T: Default
pub fn replace(&self, val: T) -> T
pub fn into_inner(self) -> T
pub fn as_ptr(&self) -> *mut T
예시
use std::cell::Cell;
let c = Cell::new(5);
c.set(10);
assert_eq!(c.get(), 10);
Cell<T>는 T가 Copy이면 Copy를 구현하고, T가 Default, Clone, PartialEq 등이면 같은 트레잇을 구현해요.