基本データ型 - Rust By Example
Description: Rust by Example (RBE) is a collection of runnable examples that illustrate various Rust concepts and standard libraries.

## Keyboard shortcuts

Press `←` or `→` to navigate between chapters

Press `S` or `/` to search in the book

Press `?` to show this help

Press `Esc` to hide this help

# 基本データ型

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);
    }

### 参照

`std` ライブラリ, `mut`, 型推論, シャドーイング