✨
[Rust備忘録]Box<T>, Rc<T>, RefCell<T>を選択する理由の要約
Rust The Book より。
Rc<T>は、同じデータに複数の所有者を持たせてくれる;Box<T>とRefCell<T>は単独の所有者。Box<T>では、不変借用も可変借用もコンパイル時に精査できる;Rc<T>では不変借用のみがコンパイル時に精査できる;RefCell<T>では、不変借用も可変借用も実行時に精査される。RefCell<T>は実行時に精査される可変借用を許可するので、RefCell<T>が不変でも、RefCell<T>内の値を可変化できる。
文章だとこんがらがるので、表にしてみた。
| スマートポインタ | 所有者 | 借用 |
|---|---|---|
| Box<T> | 単独 | 不変借用も可変借用もコンパイル時に精査 |
| Rc<T> | 複数 | 不変借用のみがコンパイル時に精査 |
| Refcell<T> | 単独 | 不変借用も可変借用も実行時に精査 |
※ RefCell<T> は実行時に精査される可変借用を許可するので、 RefCell<T> が不変でも、 RefCell<T> 内の値を可変化できる。
うん。見やすい。
Discussion