Rustの関数の引数でmutを使ったときの挙動
Rustの変数はデフォルトでイミュータブルである。たとえば、
let x = 10; x = 20;
はエラーとなる。値を更新したい場合は、
let mut x = 10; x = 20;
とする必要がある (mut
はmutableの略) 。
本題
fn sample(mut n: i32) -> i32 { n += 1; n } fn main() { let n = 10; println!("n_before = {}", n); println!("sample(n) = {}", sample(n)); println!("n_after = {}", n); }
を実行すると
n_before = 10 sample(n) = 11 n_after = 10
が出力される。mutableといっても、Javaとは違って参照値を渡しているわけではなく、純粋に値を後から代入しなおせるようにするだけの模様。