ベクター(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が便利です。