git

    ベクター

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