これ何
rustって一度値を入れたら更新できない。
同じ変数の値を変える場合どうしたらいいんだっけって言う備忘録
再代入と再束縛の2つのパターンがある。
違い
再代入
-
- 同じ型のデータしか代入できない
-
- ミュータブル(変更可能な)変数とも言う
ミュータビリティ – Rust By Example 日本語版 https://doc.rust-jp.rs/rust-by-example-ja/variable_bindings/mut.html
再束縛
-
- 違う型も代入することができる
-
- 変数のシャドーイングとも言う
スコープとシャドーイング – Rust By Example 日本語版 https://doc.rust-jp.rs/rust-by-example-ja/variable_bindings/scope.html
sample
fn main() {
// 再代入
let mut variable1 = 32i32;
println!("variable1 is {}", variable1);
variable1 = 64i32;
println!("variable1 is {}", variable1);
// errorが発生する
// variable1 = "string";
// 再束縛
let variable2 = 32i32;
println!("variable2 is {}", variable2);
let variable2 = 64i32;
println!("variable2 is {}", variable2);
let variable2 = "string";
println!("variable2 is {}", variable2);
}
実行結果
variable1 is 32
variable1 is 64
variable2 is 32
variable2 is 64
variable2 is string
参考文献
-
- Rustの変数(再代入、再宣言(シャドーイング)) – やってみる http://ytyaru.hatenablog.com/entry/2020/08/02/000000
再束縛と再代入の違い – Qiita https://qiita.com/padawan_e15/items/63b0c728514907c9faaa