数値型

整数型

整数のデータ型は範囲 + bit数で表される

範囲は以下の通り

  • u(unsigned integer): 0以上の整数(2のn乗-1まで)
  • i(signed integer): 負の数も含む整数(-2のn乗から2のn乗-1まで)

bit数は8, 16, 32, 64, 128の5種類がある

それを組み合わせて、u32i64などの表現できる

もしくは、PCのアーキテクチャに合わせたサイズのisizeusizeもある

※ 注意点

デバッグモードでは範囲を超えた時にエラーになるが、リリースモードでは範囲を超えたときに値が巻き戻る(オーバーフローする)ので注意

例: u8における256(u8は最大が256)

  • debug: panic!を起こす
  • release: 0として扱われる

浮動小数点型

浮動小数点数のデータ型は似た感じで、f + bit数という表現になる

f32f64の二種類のレパートリーになる

f64が基本でいい(速度に差がないのに精度がいいから)

真偽値型

真偽値のデータ型はboolで表される

truefalseの二種類の値を取ることができる

文字型

1文字を表すデータ型はcharで表される

文字列は""で囲うが、char''で囲う必要がある

※ 文字列型は上級編で

タプル型

複数の値をまとめて返すことができるデータ型

Rustは関数の戻り値は1つなので、複数の値を返したいときに便利

1つのタプル内のデータ型はバラバラでもいい

// 本来こういうデータは構造体の方がいいけど、例として
let result: (u8, f64, bool) = (24, 60.2, false);

// 分割代入ができる
let (age, weight, has_license) = result;

// タプルの要素にアクセスするには、インデックスを使う 
println!(result.0); // 24

配列型

いわゆる配列のデータ型

全部の要素は同じデータ型でなければならない

また、配列の長さは固定になる(コンパイル時に決まる)

※ 長さを変えたい場合は、ベクタ型(Vec)を使う(上級編で)

// 定義方法1-1: 定義時点で配列の長さが5で固定される(型は自動推測)
let array1 = [1, 2, 3, 4, 5];

// 定義方法1-2: 型注釈を使って配列の長さを指定する
// `[型; 長さ]`という形式で指定する
let array2: [u8; 3] = [10, 20]; // 定義した型に対して要素数に過不足はNG

// 定義方法2: 一括で同じ値の配列を定義
let array3 = [0; 5]; // 長さ5の配列で、全ての要素が0になる



// アクセスはインデックスを使う(0から始まる)
array1[0]; // 1
// array1[10]などのようにインデックスは範囲外になると、実行時にエラーになるので注意

// 配列の長さは`len`メソッドで取得できる
println!(array1.len()); // 5

参考