基本データ型
Rustは様々な基本データ型の使用をサポートしています。以下がその例です。
スカラー型
- 符号付き整数:
i8
,i16
,i32
,i64
,i128
,isize
(ポインタのサイズ) - 符号無し整数:
u8
,u16
,u32
,u64
,u128
,usize
(ポインタのサイズ) - 浮動小数点数:
f32
,f64
char
:'a'
,'α'
,'∞'
などのUnicodeのスカラー値(それぞれ4バイト)bool
:true
またはfalse
- ユニット型
()
:唯一の値として空のタプル()
を持つ
ユニット型はその値がタプルですが、複合型とはみなされません。内部に複数の値を含んでいるわけではないからです。
複合型
- 配列: 例えば
[1, 2, 3]
- タプル:例えば
(1, true)
変数は常に 型指定 できます。数値型の場合はさらにサフィックスでの指定も可能です。指定しない場合デフォルトになります。整数はi32
が、浮動小数点はf64
がデフォルトです。また、Rustは文脈から型を推論することもできます。
fn main() { // 変数に型を指定。 let logical: bool = true; let a_float: f64 = 1.0; // 通常の型指定 let an_integer = 5i32; // サフィックスによる型指定 // サフィックスを指定しない場合、デフォルトを選択。 let default_float = 3.0; // `f64` let default_integer = 7; // `i32` // 型を文脈から推論することも可能。 let mut inferred_type = 12; // 型 i64 は次行の内容に基づいて推論。 inferred_type = 4294967296i64; // ミュータブルな変数は値を変更できます。 let mut mutable = 12; // ミュータブルな`i32` mutable = 21; // エラー!ミュータブルな変数でも型は不変。 mutable = true; // 変数はシャドーイングによって上書きできます。 let mutable = true; /* Compound types - Array and Tuple */ // Array signature consists of Type T and length as [T; length]. let my_array: [i32; 5] = [1, 2, 3, 4, 5]; // Tuple is a collection of values of different types // and is constructed using parentheses (). let my_tuple = (5u32, 1u8, true, -5.04f32); }