生涯未熟

プログラミングをちょこちょこと。

Rustを触る②

今度は「シンタックスとセマンティクス」やっていきます。

変数束縛

let を使う。

パターン

let を用いた際の左式は パターン と呼ばれる。

let (x, y) = (1, 2);

こういうことが可能。

アノテーション

let x: i32 = 5;

公式ドキュメントでは推論する型をコメントで書くやり方も紹介されているが、基本的には型は書いていこう。

可変性

変数束縛はイミュータブル。なので以下はエラー。

let x: i32 = 5;
x = 10;
// re-assignment of immutable variable `x`

ミュータブルとして扱いたい場合は、 mut を使う。

let mut x: i32 = 5;
x = 10;

束縛を初期化する

未初期化の値を使用するとコンパイラに怒られる。

ついでに文字列中に値を差し込んで入れる例。

let x: i32 = 5;
println!("x = {}", x);
// x = 5

スコープとシャドーイング

変数束縛のスコープはブロック内のみ。

またスコープ内で変数束縛を上書くことをシャドーイングと呼ぶ。

let x: i32 = 8;
{
    println!("{}", x); // "8"を印字する
    let x = 12;
    println!("{}", x); // "12"を印字する
}
println!("{}", x); // "8"を印字する
let x =  42;
println!("{}", x); // "42"を印字する

違う型で上書くことも出来る。