Progrust Library.

// dictionary

タプル型.

タプル型(T1, T2, …)は、値を固定個数並べて1つにまとめるプリミティブ型です。
すべての要素が同じ型でなければならない配列型と異なり、要素ごとに別の型を持てます。
要素の型の並びと個数は型自体の一部で、コンパイル時に確定します。そのため(i32, bool)(bool, i32)は異なる型として扱われます。

fn main() {
    // 商品名・価格・セール対象かどうかをひとまとめにする
    let item: (String, u32, bool) = (String::from("りんご"), 150, true);
    println!("{}{}円です", item.0, item.1);
}
Playgroundで開く

アクセス方法

方法①:タプルインデックス式

tuple.0のように.の後ろへ10進リテラルを書いて要素へアクセスします。インデックスに指定できるのはリテラルのみで、tuple.iのように実行時の値で要素を選ぶことはできません。範囲外のインデックスはコンパイルエラーになります。

fn main() {
    let point: (i32, i32) = (3, 5);
    println!("x座標: {}", point.0);
    println!("y座標: {}", point.1);
}
Playgroundで開く

方法②:パターンによる分解

let (a, b) = tuple;のように、パターンを使って全要素をまとめて取り出せます。関数の引数やmatchでも同じパターンが使えます。

fn main() {
    let point: (i32, i32) = (3, 5);
    let (x, y) = point; // 各要素をまとめて取り出す
    println!("x座標: {}, y座標: {}", x, y);
}
Playgroundで開く

補足

要素0個のタプルはユニット型

要素が0個のタプル型()ユニット型と呼ばれます。値も()の1つだけで、意味のある値を返さない式や関数の型として使われます。

1要素タプルにはカンマが必要

要素が1個のタプルは、末尾にカンマを付けて括弧付きの式・型と区別します。

fn main() {
    let single: (i32,) = (500,); // カンマがあれば1要素タプル
    let grouped: i32 = (500); // カンマがなければただの括弧式(型はi32)
    println!("{} {}", single.0, grouped);
}
Playgroundで開く

この辞書が使われているページ

backlinks 9

  1. 辞書for式
  2. 辞書コンソール出力
  3. 辞書タプル構造体
  4. 辞書プリミティブ型
  5. 辞書ユニット型
  6. 辞書関数
  7. 辞書構造体
  8. 動かして学ぶRustプログラミング問題集 › 第5章 タプルと配列・スライス
  9. 動かして学ぶRustプログラミング問題集 › 第9章 構造体