【Rust】第1章第4回:配列とタプル:データ構造の基本と操作方法

本記事では、Rustにおける配列とタプルの基本概念、使い方、そして実際のコード例を交えて解説します。これらのデータ構造を適切に使い分けることで、より効率的なプログラムを書けるようになります。
0. 記事の概要
この記事を読むメリット
- Rustの配列とタプルの基本を理解: それぞれの特徴と用途を学べます。
- 実践的なコードを習得: 実際のRustコードを見ながら学べます。
- データの適切な管理方法を習得: 配列とタプルの使いどころを明確にできます。
この記事で学べること
- Rustにおける配列の使い方
- タプルの特徴と操作方法
- 配列とタプルの使い分け方
1. Rustの配列の基本

1.1 配列とは?
配列は同じ型の値を固定長で保持するデータ構造です。Rustでは以下のように宣言します。
fn main() {
let numbers: [i32; 5] = [1, 2, 3, 4, 5];
println!("配列の要素: {:?}", numbers);
}
動作解説
このコードでは、i32
型の要素を5つ持つ配列numbers
を作成し、出力しています。
1.2 配列のインデックスアクセス
配列の要素にはインデックスを使用してアクセスできます。
fn main() {
let numbers = [10, 20, 30, 40, 50];
println!("2番目の要素: {}", numbers[1]);
}
動作解説
配列のインデックスは0から始まるため、numbers[1]
は2番目の要素20
を取得します。
2. Rustのタプルの基本

2.1 タプルとは?
タプルは異なる型の値を一緒に格納できるデータ構造です。
fn main() {
let person: (String, i32, bool) = ("Alice".to_string(), 30, true);
println!("名前: {}, 年齢: {}, 登録済み: {}", person.0, person.1, person.2);
}
動作解説
このコードでは、文字列、整数、ブール値を持つタプルperson
を作成し、各要素にアクセスしています。
2.2 タプルの分割
タプルの各要素は変数に分割して格納できます。
fn main() {
let tuple = (500, 6.4, "Rust");
let (x, y, z) = tuple;
println!("x: {}, y: {}, z: {}", x, y, z);
}
動作解説
タプルtuple
を3つの変数x
、y
、z
に分割し、それぞれの値を取得しています。
3. 配列とタプルの使い分け

配列とタプルの違いを理解し、適切に使い分けましょう。
- 配列: 同じ型のデータを固定長で扱う場合に適している。
- タプル: 異なる型のデータをまとめて管理する際に有効。
4. よくあるエラーと対処法
- 「index out of bounds」エラー: 配列の範囲外の要素にアクセスしようとすると発生。正しい範囲を確認する。
- 「mismatched types」エラー: タプルの型と異なる型のデータを代入しようとすると発生。型を確認する。
5. まとめ
本記事では、Rustの配列とタプルの基本概念、使い方、使い分けについて解説しました。次回はRustの列挙型(Enum)とパターンマッチングについて詳しく説明します。