ベクター

ベクター(Struct std::vec::Vec)を楽に構築するvec!マクロにより拡張可能なコレクションを定義できます。

[ ]で囲むということは共通ルールですが、これには2つの構文があり1つは,で区切って値を定義する方法です。

let v = vec![1, 2, 3];
// [1, 2, 3]

2つはすべての値が同じ時に便利で共通値; サイズのように記述します。例えば、1を3つ持ったベクターを定義したい場合はこうなります。

let v = vec![1; 3];
// [1, 1, 1]

尾に値を追加

pushメソッドを使えます。

let mut v = vec![1, 2];
v.push(3);

assert_eq!(v, vec![1, 2, 3]);

インデックス値を取得

最後の値を取得したい場合popメソッドが使えます。戻り値はVec<T>であればOption<T>になります。

let mut v = vec![1, 2, 3];
let option_i32 = v.pop();

assert_eq!(option_i32, Some(3i32));

好きなインデックス値を削除したいならremoveメソッドが使えます。このメソッドの戻り値はその位置にあった値です。もし、インデックス値がベクターサイズより大きい値の場合panic!されます。

let mut v = vec![1, 2, 3];
let removed_i32 = v.remove(0);

assert_eq!(removed_i32, 1i32);
assert_eq!(v, vec![2, 3]);

// v.remove(5); は `panic!`

サイズを取得

lenメソッドを使います。

let v = vec![1; 3];
v.len() // 3

空がどうかを確認したいだけならis_empty(&self) -> boolが便利です。