回答編集履歴
1
ローカル変数のmutの非一貫性の例として `Cell<T>` のほかに `Box<T>` を追加
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
|
|