Cómo obtener un slice de Vec<T> en Rust: guía completa
¡Hola a todos! Empecé a estudiar Rust y me encontré con un problema al trabajar con vectores. Tengo un `Vec` y quiero obtener un subconjunto de sus elementos, es decir, un slice. Por ejemplo, estoy escribiendo un programa para procesar datos donde hay un vector de números y necesito trabajar solo con los primeros tres elementos o con un rango del 2 al 5.
Probé diferentes enfoques, pero el compilador arroja errores. Aquí está mi código:
```rust
fn main() {
let numbers = vec![10, 20, 30, 40, 50, 60];
// Quiero obtener un slice con índices 1..3 (20, 30, 40)
let slice = numbers[1..4]; // ¡Error!
println!("{:?}", slice);
}
```
El compilador dice algo sobre los traits `Index` y `Range` — no entiendo del todo qué significa. También he oído que hay una diferencia entre `&[T]` y `Vec`, pero ¿cómo se convierten correctamente? Y además: ¿se pueden modificar los elementos en un slice si el vector original es mutable?
Por favor, explíquenme con ejemplos concretos:
1. ¿Cómo obtener correctamente un slice inmutable?
2. ¿Cómo obtener un slice mutable?