将一个源数组拆分成几个副本的正确方法是什么?

时间:2017-03-27 13:37:06

标签: arrays split rust

这样的事情:

let source = [0u8; 40];
let a = source[0..11];
let b = source[11..40];

1 个答案:

答案 0 :(得分:2)

使用slice::split_at

fn main() {
    let source = [0u8; 40];
    let (a, b) = source.split_at(11);
    println!("{}, {}", a.len(), b.len())
}

split_at_mut中也讨论了How to operate on 2 mutable slices of a Rust array

在这种情况下,您还可以使用多个子句,因为它是不可变的。这些可能重叠:

fn main() {
    let source = [0u8; 40];
    let a = &source[0..11];
    let b = &source[11..40];
    println!("{}, {}", a.len(), b.len())
}
  

成几份?

切片的重点是复制不是。切片只是指向数据开头和长度的指针。数据本身是共享的。

  

我想制作一个'和' b'数组而不是切片

然后你应该看看How to get a slice as an array in Rust?