如何获得耻辱?

use*_*018 8 rust

我有一个a类型的变量&[T]; 我怎样才能获得对子片段的引用a

作为一个具体的例子,我想得到第一和第二部分a,提供a.len()是偶数.

Vla*_*eev 13

您使用切片语法:

fn main() {
    let data: &[u8] = b"12345678";
    println!("{:?} - {:?}", &data[..data.len()/2], &data[data.len()/2..]);
}
Run Code Online (Sandbox Code Playgroud)

(在这里试试)

一般语法是

&slice[start_idx..end_idx]
Run Code Online (Sandbox Code Playgroud)

它给出了一个派生自slice,开始start_idx和结束的切片end_idx-1(即不包括右索引处的项目).可以省略任一索引(甚至两者),这相应地意味着零或切片长度.

请注意,如果要将某个位置的切片拆分为两个切片,通常最好使用split_at()方法:

let data = b"12345678";
let (left, right): (&[u8], &[u8]) = data.split_at(4);
Run Code Online (Sandbox Code Playgroud)

而且,这是从另一个可变切片中获取两个可变切片的唯一方法:

let mut data: Vec<u8> = vec![1, 2, 3, 4, 5, 6, 7, 8];
let data_slice: &mut [u8] = &mut data[..];
let (left, right): (&mut [u8], &mut [u8]) = data_slice.split_at_mut(4);
Run Code Online (Sandbox Code Playgroud)

然而,这些基本的东西在关于Rust 的官方书籍中有解释.如果你想学习Rust,你应该从那里开始.