Avatar ·

如何从 Rust 中的 Vec<T> 获取切片(slice):完整指南

大家好!我开始学习 Rust,在处理向量时遇到了问题。我有一个 `Vec`,想要获取其元素的子集——即切片(slice)。例如,我正在编写一个数据处理程序,其中有一个数字向量,我只需要处理前三个元素或范围从 2 到 5 的元素。 我尝试了不同的方法,但编译器报错。这是我的代码: ```rust fn main() { let numbers = vec![10, 20, 30, 40, 50, 60]; // 想要获取索引 1..3 的切片 (20, 30, 40) let slice = numbers[1..4]; // 错误! println!("{:?}", slice); } ``` 编译器提示关于 `Index` 和 `Range` 的 trait——我不太明白这是什么意思。我还听说 `&[T]` 和 `Vec` 之间有区别,但如何正确转换它们?另外,如果原始向量是可变的,能否修改切片中的元素? 请用具体示例解释: 1. 如何正确获取不可变切片? 2. 如何获取可变切片?