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