Comment obtenir une slice (tranche) à partir de Vec<T> en Rust ?
Bonjour à tous ! Je viens de commencer à apprendre Rust et j'ai rencontré un problème en travaillant avec les vecteurs. J'ai un `Vec` et je dois passer une partie de ses données à une fonction qui accepte une slice `&[u32]`. J'ai essayé de le faire de différentes manières, mais je reçois constamment des erreurs de compilation.
Voici un exemple de mon code :
```rust
fn main() {
let numbers = vec![10, 20, 30, 40, 50];
// Je veux obtenir une slice des trois premiers éléments
let slice = &numbers[0..3];
// Fonction qui accepte une slice
process_slice(slice);
}
fn process_slice(data: &[u32]) {
for &item in data {
println!("{}", item);
}
}
```
Ce code fonctionne, mais je ne comprends pas certains détails. Par exemple :
1. Quelle est la différence entre `&vec[..]` et `vec.as_slice()` ? Font-ils la même chose ?
2. Comment obtenir une slice mutable pour modifier les éléments à l'intérieur du vecteur ?
3. Pourquoi ne puis-je pas simplement prendre `vec[0..3]` sans le symbole & ?
4. Que se passe-t-il si j'essaie de prendre une slice en dehors des limites ?