変数

Rustの変数は、デフォルトでは不変(イミュータブル)になります。

let [変数名] = [初期値];

そのため、初期値から変更しようと代入するとエラーになります。

fn main() {
    let x = 5;
    let msg = "test message";

    println!("x = {}: {}", x, msg);
}

文字列

文字列は、ダブルクォートで囲んで指定します。

fn main() {
    let msg = "Start counter";
    println!("{}", msg);
}

可変な変数

カウンタなどに使用する変数では、値が変更できなければなりません。 このような可変な変数は、宣言時にmutを指定する必要があります。

let mut [変数名] = [初期値];

fn main() {
    let max = 3;
    let mut count = 0;
    loop {
        count += 1;
        if count > max {
            break;
        }
        println!("loop: {}", count);
    }
}
実行結果は以下のようになります。
loop: 1
loop: 2
loop: 3

シャドーイング

Rustでは、同じスコープで同じ変数を宣言することができます。 この場合、前の変数を覆い隠すことになります。

fn main() {
    let count = 1;
    println!("count: {}", count);

    let count = 99;
    println!("count: {}", count);
}
これを実行すると、以下のようになります。
count: 1
count: 99