Open6

『The Rust Programming Language』でRust入門

Hiroki HoriuchiHiroki Horiuchi

まずはRustのインストール

https://doc.rust-jp.rs/book-ja/ch01-01-installation.html

$ curl --proto '=https' --tlsv1.2 https://sh.rustup.rs -sSf | sh

このコマンドで、rustup コマンドをインストール

export PATH="$HOME/.cargo/bin:$PATH"

.zshrc に追記して、PATHを設定しておきます。

$ rustup update
$ rustc --version

コマンドが正常に実行できたら準備完了。

Hiroki HoriuchiHiroki Horiuchi

変数の定義方法

https://doc.rust-jp.rs/book-ja/ch03-01-variables-and-mutability.html

const MAX_POINT: u32 = 100_000;  // 定数の定義は const で。また定数の変数名は全て大文字で単語区切りは `_` を使う

fn main() {
    let x = 1;  // 変数の定義は let で
    let mut y = 1.2;  // mutを付けた場合だけ、変更可能な変数になる。
}

変数宣言がデフォルトで不変な代わりに、同じ変数名を使ってシャドーイングをする事が推奨されている。
ここは既存の言語とはちょっと違う点かな?ESLintには no-shadow というそのものズバリなルールがあるし。
https://eslint.org/docs/latest/rules/no-shadow

Hiroki HoriuchiHiroki Horiuchi

Rustのデータ型

https://doc.rust-jp.rs/book-ja/ch03-02-data-types.html

整数型

大きさ 符号付き 符号なし
8-bit i8 u8
16-bit i16 u16
32-bit i32 u32
64-bit i64 u64
arch isize usize

Rustの整数型の基準はi32型。
『符号付き数値は、 2の補数表現で保持されます』と明示されているんですね。Cは未規定だったはず。

浮動小数点型

f32, f64 の2つ。
基準型は f64。IEEE-754規格に従って表現されていることが保証されている。

論理値型

型は 'bool、取りうる値はtrueorfalse`

文字型

char 型はユニコードのスカラー値を表す。
『ユニコードスカラー値は、 U+0000からU+D7FFまでとU+E000からU+10FFFFまでの範囲になります。』

なので日本語の文字もそのまま扱える。
絵文字も扱えるけれど、一見一文字に見える絵文字でも複数のユニコード値で表される場合は対象外。

複合型

タプル

fn main() {
    let tup: (i32, f64, u8) = (500, 6.4, 1);

    let (x, y, z) = tup;

    println!("The value of y is: {}", y);
}

タプルから個々の値を取り出すためには、パターンマッチを使うことができる。

fn main() {
    let x: (i32, f64, u8) = (500, 6.4, 1);

    let five_hundred = x.0;

    let six_point_four = x.1;

    let one = x.2;
}

もしくは、数字の添え字を使って個々の要素にアクセスも可能。

配列

『Rustの配列は、他の言語と異なっています。Rustの配列は、 固定長なのです。』

fn main() {
    let a: [i32; 5] = [1, 2, 3, 4, 5];

    let a = [3; 5];  // [3, 3, 3, 3, 3] と同じ

    let first = a[0];
    let second = a[1];
}

添え字に範囲外の値を指定した場合には、実行時にpanicが発生する。