Rust のデータ構造
1. データ構造 (Data Structures)
Rustにおいて、データ構造(Data Structures)は値を格納し、整理するために使用されます。
Rustには多くのビルトインデータ構造が用意されており、それぞれが異なる方法でデータを処理するために使用されます。
代表的なものは以下の通りです:
- 配列 (Array)
- ベクタ (Vector / Vec)
- タプル (Tuple)
- ハッシュマップ (HashMap)
これらについては後ほど詳しく解説しますが、まずはそれぞれの概要を簡単に紹介します。
2. 配列 (Arrays)
Rustの配列(Array)は、すべて同じ型の値を持つ、固定サイズのリストです。
作成後に配列のサイズを増やしたり減らしたりすることはできません。
配列の要素にアクセスするには、インデックス番号(Index number)を参照します。
Note: インデックスは0から始まります。[0] は最初の要素、[1] は2番目の要素、となります。
サンプルコード
let fruits = ["りんご", "バナナ", "オレンジ"];
println!("最後のフルーツ: {}", fruits[2]);3. ベクタ (Vectors)
ベクタ(Vector)は、サイズ変更が可能な配列です。通常の配列とは異なり、要素を追加したり削除したりしてサイズを動的に変更できます。
サンプルコード
let mut fruits = vec!["りんご", "バナナ"];
fruits.push("さくらんぼ");
println!("最後のフルーツ: {}", fruits[2]);4. タプル (Tuples)
タプル(Tuple)は、異なる型の複数の値を保持できます。異なる型を一つのグループとしてまとめたい時に便利です。
タプルの要素には、ドット(.)とインデックス番号(例:person.1)を使用してアクセスします。
サンプルコード
let person = ("太郎", 30, true);
println!("名前: {}", person.0);
println!("年齢: {}", person.1);
println!("アクティブ状態: {}", person.2);5. ハッシュマップ (HashMaps)
ハッシュマップ(HashMap)は、キーと値のペア(Key-Value pairs)を格納します。キーを使用して対応する値を検索することができます。
HashMapを使用するには、標準ライブラリ(Standard library)からインポートする必要があります。
サンプルコード
// HashMapをインポート
use std::collections::HashMap;
fn main() {
let mut capitalCities = HashMap::new();
capitalCities.insert("フランス", "パリ");
capitalCities.insert("日本", "東京");
println!("日本の首都は {}", capitalCities["日本"]);
}6. データ構造の概要
| データ構造 | ユースケース | サイズ変更可能か? |
|---|---|---|
| 配列 (Array) | 同じ型の値の固定サイズリスト | No |
| ベクタ (Vector) | 同じ型の値の可変サイズリスト | Yes |
| タプル (Tuple) | 異なる型の値をグループ化 | No |
| ハッシュマップ (HashMap) | キーと値によるルックアップ | Yes |