Avatar ·

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 ?