スカラー型
Rustにおけるスカラー型は4つあります。
- 整数
- 浮動小数点数
- 論理値
- 文字
整数
大きさ | 符号付き | 符号なし |
---|---|---|
8-bit | i8 | u8 |
16-bit | i16 | u16 |
32-bit | i32 | u32 |
64-bit | i64 | u64 |
arch | isize | usize |
- 例えばu32型の場合、符号なし整数になるので、32ビット分のサイズを取ります。
- ちなみに符号付きと符号なしは、数値が正負どうかを示します。
- isize型とusize型は、プログラムが動作しているコンピュータの種類に依存します。
- 64ビットアーキテクチャの場合、64ビットになります。
- 32ビットアーキテクチャの場合、32ビットになります。
浮動小数点数
- Rustの浮動小数点型は、f32型とf64型の2つです。
- 基準型はf64型です。
f32型
- f32型は、単精度浮動小数点数で、32ビットです。
f64型
- f64型倍精度浮動小数点数で、64ビットです。
論理値
- Rustの論理値型は、trueとfalseの2つです。
例:
fn main() {
let f: bool = false;
}
文字
- Rustの文字は、char型です。
- char型は、ユニコードのスカラー値を表します。
- そのため、アクセント文字、中国語、日本語、韓国語、絵文字、ゼロ幅スペースは有効なchar型になります。
複合型
- 複合型とは、複数の値を一つの型にまとめることができます。
- 複合型には、2種類の複合型があります。
タプル型
- タプル型は、複数の型の値を一つの複合型にまとめ上げるものです。
- ()の中にカンマ区切りの値のリストを書くことで生成します。
例:
fn main() {
let tup: (i32, f64, u8) = (500, 6.4, 1);
}
- またタプル型からパターンマッチングを使用して、個々の値を取り出すことができます。
例:
fn main() {
let tup = (500, 6.4, 1);
let (x, y, z) = tup;
println!("{}", y);
}
[実行結果]
❯ cargo run
Compiling variables v0.1.0 (/Users/yoshitaka.koitabashi/Desktop/variables)
warning: unused variable: `x`
--> src/main.rs:3:10
|
3 | let (x, y, z) = tup;
| ^ help: if this is intentional, prefix it with an underscore: `_x`
|
= note: `#[warn(unused_variables)]` on by default
warning: unused variable: `z`
--> src/main.rs:3:16
|
3 | let (x, y, z) = tup;
| ^ help: if this is intentional, prefix it with an underscore: `_z`
warning: 2 warnings emitted
Finished dev [unoptimized + debuginfo] target(s) in 1.42s
Running `target/debug/variables`
6.4
- ただ、実行した結果を見てわかるように、使用していない値に関しては_を付けてと怒られるので、正しく使うなら下記のようになります。
fn main() {
let tup = (500, 6.4, 1);
let (_x, y, _z) = tup;
println!("{}", y);
}
[実行結果]
❯ cargo run
Compiling variables v0.1.0 (/Users/yoshitaka.koitabashi/Desktop/variables)
Finished dev [unoptimized + debuginfo] target(s) in 0.22s
Running `target/debug/variables`
6.4
- この例では、まずタプルを生成し、それを変数tupに束縛しています。
- その後、letとパターンを使ってtup変数の中身を3つの個別の変数(x、y、z)に変換しています。
=> この過程を分配と呼びます。
配列型
- 配列型は、複数の値のコレクションを得ることができます。
- 配列の全要素は、同じ型でなければならない。
- またRustの配列は固定長の為、一度宣言されたらサイズを伸ばすことも縮めることもできません。
- Rustでは、配列に入れる要素は[]内にカンマ区切りのリストとして書きます。
例:
fn main() {
let a = [1, 2, 3, 4, 5];
}
- 配列は、スタック上に確保されるメモリの為、添え字によって配列の要素にアクセスすることができます。
fn main() {
let a = [1, 2, 3, 4, 5];
let first = a[0];
let second = a[1];
}