Learning Rust - Mutability

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;

このようにymut指定すると参照先をzに変えることができました。

最後に、mutは’pattern’の一部なので、次のようにかけます。

let (mut x, y) = (5, 6);

このとき、xはmutableですが、yはimmutableです。


短いですが、今回はここまでです。 デフォルトでimmutableなのは、面倒ですがバグ回避のためには大事ですね。