【发布时间】:2015-07-28 03:44:00
【问题描述】:
我有一个变量a,类型为&[T];如何获得对a 子片段的引用?
作为一个具体的例子,我想得到a 的前半部分和后半部分,前提是a.len() 是偶数。
【问题讨论】:
标签: rust
我有一个变量a,类型为&[T];如何获得对a 子片段的引用?
作为一个具体的例子,我想得到a 的前半部分和后半部分,前提是a.len() 是偶数。
【问题讨论】:
标签: rust
您为此使用切片语法:
fn main() {
let data: &[u8] = b"12345678";
println!("{:?} - {:?}", &data[..data.len()/2], &data[data.len()/2..]);
}
(试试看here)
一般语法是
&slice[start_idx..end_idx]
它给出了一个从slice 派生的切片,从start_idx 开始,到end_idx-1 结束(即不包括右侧索引处的项目)。任何一个索引都可以省略(甚至两者都省略),这意味着相应地为零或切片长度。
请注意,如果要将某个位置的切片拆分为两个切片,通常最好使用split_at() 方法:
let data = b"12345678";
let (left, right): (&[u8], &[u8]) = data.split_at(4);
此外,这是从另一个可变切片中获取两个可变切片的唯一方法:
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);
然而,这些基本的东西在 Rust 的the official book 中有解释。如果你想学习 Rust,你应该从那里开始。
【讨论】: