teratail header banner
teratail header banner
質問するログイン新規登録

回答編集履歴

1

ローカル変数のmutの非一貫性の例として `Cell<T>` のほかに `Box<T>` を追加

2018/02/22 07:25

投稿

qnighy
qnighy

スコア210

answer CHANGED
@@ -56,7 +56,7 @@
56
56
  - そのローカル変数自体への `&mut` 参照をとるには、 `let mut` が必要。
57
57
  - `let x : &mut T` の場合は、その `&mut` 参照はそのまま取れる。
58
58
 
59
- つまり、 `let mut` は「そのローカル変数自体を書き換えられる」という状況を可能な限り再現する規則になっています。しかし、 `let x : Cell<T>` とすれば `x` 自体を書き換えられるので、あくまで「可能な限り再現する」という言い方が妥当だと思います。
59
+ つまり、 `let mut` は「そのローカル変数自体を書き換えられる」という状況を可能な限り再現する規則になっています。しかし、 `let x : Cell<T>` とすれば `x` 自体を書き換えられるので、あくまで「可能な限り再現する」という言い方が妥当だと思います。(また逆に、 `let x : Box<T>` では `T` はヒープ上にあるにも関わらずimmutable扱いになります。)
60
60
 
61
61
  # まとめ
62
62