【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:?}")
}

总结

了解了数组切片中相关的一些方法。

附录

posted @ 2022-05-26 19:52  jiangbo4444  阅读(148)  评论(0编辑  收藏  举报