例如,在python中,您可以使用
a = [1,2,3]
b = a[:-1] #1,2
在锈中,它具有某种语法来获取数组的一部分range
let a = vec![1,2,3];
let b = &a[0..2]; // 1,2
问题是您必须指向最后一个索引(不包括)。如果要使用-1,将导致编译器错误
let b = &a[0..-1];
let a = vec![1,2,3];
// err msg
// let b = &a[0..-1];
// ^^ the trait `std::ops::Neg` is not implemented for `usize`
所以我怎么能做到这一点?
我认为split_last
是您要寻找的:它返回一个可选的2元组,其中包含对最后一个元素的引用以及直至(但不包括)最后一个元素的切片。
即split_last
得到您所要求的内容(a.split_last().unwrap().1
假定unwrap
为非空)。
如果要修改它,也有它的堂兄a
。
可能不是您想要的,因为您似乎在寻求一个不太冗长的解决方案,但是可以使用fn main() {
let a = vec![1, 2, 3];
println!("{:?}", &a[0..a.len() - 1]);
}
;使用向量时,它会改变原始向量。
fn main() {
let a = vec![1, 2, 3];
println!("{:?}", &a[0..a.len() - 1]);
}