これ何

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

广告
将在 10 秒后关闭
bannerAds