Dev Study
← 解説「Vec<T> — 可変長の配列」に戻る

サンプルコードで身につける: Vec<T> — 可変長の配列

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

1作って、足して、取り出す

vec! マクロで作り、push で追加し、添字と len で読むという Vec の基本操作を一通り並べた最小例です。push するには let mut が必要な点も確認できます。{:?} を使えば全要素をまとめて表示でき、動作確認に便利です。

Rust

2空の Vec をループで育てる

Vec::new() で空から始め、ループで push して育てる例です。空の Vec は要素の型が分からないため、Vec<i32> という型注釈が必要になります。「実行時に件数が決まるデータを溜めてから集計する」のは、ファイルの行や検索結果を扱う実務処理の基本形です。

Rust

3要素を書き換える

添字での1点更新と、&mut で借りて回しながらの全要素更新という2通りの書き換えを示します。for p in &mut prices の p は可変参照なので、*p で中身に代入します。「全商品を1割引にする」のような一括更新は、可変参照のレッスンで学んだ仕組みがそのまま活きる場面です。

Rust

4String を集める Vec

要素が String のような所有権を持つ型でも、Vec は同じように扱えます。push した String の所有権は Vec に移り、以後は members が全員分をまとめて所有します。0..members.len() のレンジで添字を回せば、番号付きの一覧表示も書けます。

Rust

5構造体の Vec で商品一覧を扱う

実務の Vec の中身は数値より「構造体」であることが圧倒的に多く、これはその典型例です。&products で借りて回せば、各要素のフィールドを読みながら合計のような集計値を作れます。データベースから取った行のリストや API のレスポンス一覧も、ほぼこの形で処理します。

Rust