Rust ベクタ(可変配列)の値を任意の数で順番に区切る

Rust ベクタ(可変配列)の値を任意の数で順番に区切る

Rustで、ベクタ(可変配列)の値を任意の数で順番に区切るサンプルコードを記述してます。「windows().collect::<Vec<_>>()」で可能です。Rustのバージョンは1.66.0を使用してます。

環境

  • OS windows11 home
  • rustc 1.66.0

任意の数で順番に区切る

任意の数で順番に区切るには、「windows().collect::<Vec<_>>()」を使用します。

ベクタ.windows(任意の数).collect::<Vec<_>>();

実際に使用してみます。

fn main() {

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

    println!("{:?}", v.windows(2).collect::<Vec<_>>() ); // [[1, 2], [2, 3], [3, 4], [4, 5]]

    println!("{:?}", v.windows(3).collect::<Vec<_>>() ); // [[1, 2, 3], [2, 3, 4], [3, 4, 5]]

}

実行結果を見ると、取得されていることが確認できます。

最大値

最大値を超えた場合は、空の配列が返り、最大値の場合だと、そのまま入れ子のベクタが生成されます。

fn main() {

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

    println!("{:?}", v.windows(5).collect::<Vec<_>>() ); // [[1, 2, 3, 4, 5]]

    println!("{:?}", v.windows(6).collect::<Vec<_>>() ); // []

}

実行結果

空の配列

空の配列に使用すると、「空の配列」が返ります。

fn main() {

    let v = vec![0; 0];

    println!("{:?}", v.windows(1).collect::<Vec<_>>() ); // []

    println!("{:?}", v.windows(2).collect::<Vec<_>>() ); // []

}

実行結果