はじめに
この記事は、私が Rust の学習時に書いた備忘録となります。間違い等があればコメント等で教えていただけると助かります。
データ型
Rust には大きく分けて2種類のデータ型(Data Types)がある。
スカラー型
スカラー型(Scalar Types)とは単一の値を持つ型のこと。整数や浮動小数点数, 論理値や文字などがそれに該当する。
整数型
整数型(Integer Types)はその名と通り整数の型。
負数を扱える「符号付き」(i
)と、負数を扱えない「符号無し」(u
)がある。
また、コンピュータのアーキテクチャに依存する isize
と usize
がある。
型注釈がない場合は、デフォルトの整数型である i32
型となる。
符号付きは負数を扱えるが、最大値が小さい。符号無しは負数を扱えないが、最大値が大きい:
型 | ビット数 | 最小値 | 最大値 |
---|---|---|---|
i8 |
8 | -128 | 127 |
i16 |
16 | -32768 | 32767 |
i32 |
32 | -2147483648 | 2147483647 |
i64 |
64 | -9223372036854775808 | 9223372036854775807 |
i128 |
128 | -170141183460469231731687303715884105728 | 170141183460469231731687303715884105727 |
isize |
arch | - | - |
u8 |
8 | 0 | 255 |
u16 |
16 | 0 | 65535 |
u32 |
32 | 0 | 4294967295 |
u64 |
64 | 0 | 18446744073709551615 |
u128 |
128 | 0 | 340282366920938463463374607431768211455 |
usize |
arch | 0 | - |
浮動小数点型
浮動小数点型(Floating-Point Types)は小数点を含む数値を表現する型。単精度(f32
)と倍精度(f64
)があり、倍精度である f64
がデフォルトとなっている。
型 | ビット数 | 種類 |
---|---|---|
f32 |
32 | 単精度浮動小数点数 |
f64 |
64 | 倍精度浮動小数点数 |
現代のコンピューターどちらも速度がほぼ変わらないため、精度の高い f64
を使うことが一般的となっている。
ドキュメント:
論理値型
論理値(Boolean Types)は真偽値。真を表す true
と、偽を表す false
の2種類がある。
ドキュメント: bool
文字型
文字型(Character Type)とは、単一の Unicode を含む型。ダブルクォーテーション "
ではなく、シングルクォーテーション'
を使って文字を囲う。
let a: char = 'A'
let b: char = '🤓'
ドキュメント: char
複合型
複合型(Compound Types)とは複数の値を1つの型にまとめることができる型。タプル型や配列型がそれに該当する。
タプル型
タプル型(Tuple Types)とは異なる型の値を1つの型にまとめる型。
let t = (64, 128.0, true, 'X');
タプルの中身は let
キーワードを使って分配することができる:
let t = (0, 1, 2);
let (i, ii, iii) = t;
println!("{}{}{}", i, ii, iii); // 012
もちろん、添字アクセスも可能:
let t = ('a', 'b', 'c');
println!("{}", t.2); // c
可変にすれば上書きも可能:
let mut t = ("ほうれん草", "しめじ", "ジーマーミ豆腐");
println!("{:?}", t); // ("ほうれん草", "しめじ", "ジーマーミ豆腐")
t.2 = "ピータン豆腐";
println!("{:?}", t); // ("ほうれん草", "しめじ", "ピータン豆腐")
ドキュメント: tuple
配列型
配列型(Array Types)とは同一の型の値を1つの型にまとめる型。タプルとは異なり、全要素が同じ型でなければならず、長さが固定となっている。
let a = ["报連草", "占地", "皮蛋豆腐"];
添字アクセス:
let a = ["麦芽コーヒー", "抹茶", "紅茶"];
println!("{}", a[2]); // 紅茶
ドキュメント: array