Syntax and Semantics
Mutability
これまで話してきたとおり、Rustはデフォルトでimmutableです。 今回は、Rustのmutabilityについて確認しておきます。
let文でvaliable bindingを宣言するとき、mut指定すれば
mutable variable bindingとなり、変更が可能になります。
let mut x = 5;
x = 6;このとき、’mutable’とはxが指しているi32型のものが変更可能という意味であり、
xが変更可能という意味ではありません。
Mutableなvariable bindingは&mut参照で受け取ることができます。
let mut x = 5;
let y = &mut x;
*y = 6;これでxが指している値が6に変わりました。
上のコードでは、y自体はmut指定されていません。
これは、参照先を変えられないということを意味します。
let mut x = 5;
let mut z = 6;
let mut y = &mut x;
y = &mut z;このようにyもmut指定すると参照先をzに変えることができました。
最後に、mutは’pattern’の一部なので、次のようにかけます。
let (mut x, y) = (5, 6);このとき、xはmutableですが、yはimmutableです。
短いですが、今回はここまでです。 デフォルトでimmutableなのは、面倒ですがバグ回避のためには大事ですね。