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>TCopy이면 Copy를 구현하고, TDefault, Clone, PartialEq 등이면 같은 트레잇을 구현해요.

더 알아보기 (Learn more)