如何从 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. 如何获取可变切片?