1. 程式人生 > 其它 >【Rust】陣列切片(六)

【Rust】陣列切片(六)

環境

  • Time 2022-03-07
  • Rust 1.59.0

概念

陣列切片是引用陣列中連續的一部分。

示例

repeat

對元素進行重複。

fn main() {
    let arr = [0, 1];
    let vec = arr.repeat(4);
    println!("{vec:?}"); //[0, 1, 0, 1, 0, 1, 0, 1]
}

reverse

反轉。

fn main() {
    let mut arr = [0, 1, 2, 3, 4];
    arr.reverse();
    println!("{arr:?}"); //[4, 3, 2, 1, 0]
}

rotate_left

旋轉和交換。

fn main() {
    let mut arr = [0, 1, 2, 3, 4];
    arr.rotate_left(2);
    println!("{arr:?}"); // [2, 3, 4, 0, 1]
}

split

分割,可變版本 split_mutrsplit_mut

fn main() {
    let arr = [0, 1, 2, 3, 4];
    let split = arr.split(|n| n == &2);
    let rsplit = arr.rsplit(|n| n == &2);
    split.for_each(|e| println!("{e:?}"));
    rsplit.for_each(|e| println!("{e:?}"));
}

partition_point

提供一個閉包獲取滿足條件的切分點,陣列需要有序。

fn main() {
    let arr = [0, 1, 2, 3, 4];
    let i = arr.partition_point(|&x| x < 2);
    println!("{i}");
}

splitn

分割,並且進行次數限制,可變版本 splitn_mutrsplitn_mut

fn main() {
    let arr = [0, 1, 2, 3, 4];
    for ele in arr.splitn(2, |&e| e % 2 != 0) {
        println!("{ele:?}")
    }
    for ele in arr.rsplitn(2, |&e| e % 2 != 0) {
        println!("{ele:?}")
    }
}

split_at

根據位置分割,可變版本 split_at_mut

fn main() {
    let arr = [0, 1, 2, 3, 4];
    let (left, right) = arr.split_at(2);
    println!("left: {left:?}, right: {right:?}")
}

總結

瞭解了陣列切片中相關的一些方法。

附錄