前回はRustの数値型や論理型について学びました。今回は、Rustの基本データ構造のひとつである タプル型 と 配列 について学んでいきましょう。
🧺 タプル型とは?
タプル型とは、異なる型の値をひとまとめにできるデータ構造のことです。
複数の型を混ぜて使用したいときにとても便利です。
let tuple: (i32, f64, &str) = (42, 3.14, "Hello");
println!("整数 {}, 小数 {}, 文字列 {}", tuple.0, tuple.1, tuple.2);
✅ タプルのポイント
- 型がバラバラでもOK
- 順番も含めて型が決まる(順番が違うと別ものとみなされる)
- 分解して変数へ代入可能
let tuple = (100, 6.28, "Rust");
let (x, y, z) = tuple;
- 無視したい値は
_
でスキップ
let (x, _, z) = tuple;
- ネスト(入れ子)も可能
let nested = ((1, 2), (3, 4), 5);
println!("{:?}", nested);
- 空のタプル(ユニット型)も存在する
let unit: () = ();
これは主に「値を返さない関数」の戻り値などに利用されます。
🧮配列とは?
配列は、同じ型の値を並べて格納するデータ構造です。
Pythonなどで言うリストに近いですが、Rustの配列は サイズ固定 です。
let a: [i32; 3] = [1, 2, 3];
✅ 配列のポイント
- すべて同じ型で統一
- 要素数は固定(増減不可)
- 初期化に同じ値を使用可能
let zeros: [i32; 1000] = [0; 1000];
- デバック表示もOK
println!("{:?}", a);
- 要素のアクセスはインデックス番号で。
let first = a[0];
- 分解代入も可能
let [x, y, z] = a;
✂️ スライスとは?
スライス は配列の一部を切り出して参照するための仕組みです。
配列そのものをコピーせず、部分的に借用できます。
let a = [1, 2, 3, 4, 5];
let slice = &a[0..3]; // → [1, 2, 3]
✅ よく使うスライスの書き方
-
&a[1..]
→ 1番目から最後まで -
&a[..3]
→ 最初から2番目まで(3は含まれない) -
&a[..]
→ 全要素
スライスを使用するとメモリ効率も良くなるため、積極的に使っていきたいですね。
📝 まとめ
- タプル型 は異なる型をひとまとめにできる柔軟なデータ構造
- 配列 は同じ型の値を固定数だけ格納できる構造
-
スライス を使用すれば、配列の一部を効率よく参照可能
Rustは少し独特な構文や制約もありますが、慣れてくるととても便利です。
ぜひ私と一緒に、Rustの知識を少しずつ深めていきましょう!
〼次回予告
次回は、ベクタ型 と 文字列 について取り上げていきます。
どうぞお楽しみに!
本シリーズはNotionでもまとめています。
こちらは私なりにまとめているものになり、考えていることとかも記載しているので、興味のある方は見ていってください。
🔗 Notionで冗長なページはこちら:
https://probable-entrance-3f3.notion.site/Rust-3-20ccd005f1708099b939c2d1a9902dfc?source=copy_link