Dev Study
← 解説「分配束縛 — structとタプルをほどく」に戻る

サンプルコードで身につける: 分配束縛 — structとタプルをほどく

解説で学んだ概念を、5つの具体例で確認します。素朴な例から実務寄りの例へと進みます。

1タプルを let でほどく

let (a, b) = pair; と書くだけで、タプルの要素を2つの変数に一度に取り出せる最小例です。pair.0、pair.1 と添字で書くより、各要素に意味のある名前が付いて読みやすくなります。要素数が3つ以上になっても同じ形で書けます。

Rust

2構造体の分配と別名

let User { name, age } = user; でフィールドを同名の変数へ取り出せ、name: n の形なら別の変数名を付けられます。user.name、user.age と何度も書くより、使うフィールドが宣言の時点で明確になります。別名は、同じ名前の変数がすでにあるときの衝突回避にも役立ちます。

Rust

3ネストと .. — 必要な要素だけ取り出す

パターンの中にパターンを書けばネストしたタプルも一度にほどけて、.. を使えば興味のない残りをまとめて無視できます。ログレコードのような「先頭と末尾だけ欲しい」データで便利です。_ が1要素ずつ無視するのに対し、.. は連続する複数要素をまとめて無視します。

Rust

4関数の引数と for ループでも同じパターン

パターンは let 専用ではなく、関数の引数や for ループの変数の位置にもそのまま書けます。特に Vec<(String, i32)> のようなペアの一覧を for (subject, score) で回す形は実務で頻出です。「値を受け取る場所ならどこでもパターンが書ける」という一貫性が Rust の設計です。

Rust

5設定タプルの分配

設定を読み込む関数がタプルを返し、受け取った瞬間に (host, port, debug) と名前を付けてほどく実務的な形です。戻り値用の構造体を定義するほどでもない少数の値の受け渡しに向いています。3つの値を別々の関数で返すより、1回の呼び出しで整合した組として受け取れるのも利点です。

Rust