Rust 指定した位置でベクタ(可変配列)を分割する

Rust 指定した位置でベクタ(可変配列)を分割する

Rustで、指定した位置でベクタ(可変配列)を分割するサンプルコードを記述してます。「split_off」で可能です。Rustのバージョンは1.66.0を使用してます。

環境

  • OS windows11 home
  • rustc 1.66.0

指定した位置でベクタ(可変配列)を分割

指定した位置でベクタ(可変配列)を分割するには、「split_off」を使用します。

ベクタ.split_off(分割位置);

実際に使用してみます。

fn main() {

    let mut v1 = vec![1, 2, 3, 4, 5];
    let v2 = v1.split_off(2);
            
    println!("{:?}", v1); // [1, 2]
    println!("{:?}", v2); // [3, 4, 5]

}

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

「0」や、

fn main() {

    let mut v1 = vec![1, 2, 3, 4, 5];
    let v2 = v1.split_off(0);
            
    println!("{:?}", v1); // []
    println!("{:?}", v2); // [1, 2, 3, 4, 5]

}

範囲の最高値を設定すると、空の配列が返ります。

fn main() {

    let mut v1 = vec![1, 2, 3, 4, 5];
    let v2 = v1.split_off(5);
            
    println!("{:?}", v1); // [1, 2, 3, 4, 5]
    println!("{:?}", v2); // []

}

範囲外

範囲外の値を指定するとエラーとなります。

fn main() {

    let mut v1 = vec![1, 2, 3, 4, 5];
    let v2 = v1.split_off(6); 
    // thread 'main' panicked at '`at` split index (is 6) should be <= len (is 5)'
            
    println!("{:?}", v1);
    println!("{:?}", v2);

}

実行結果