Avatar ·

Comment obtenir une slice (tranche) à partir d'un Vec<T> en Rust : guide complet

Bonjour à tous ! J'ai commencé à apprendre Rust et j'ai rencontré un problème en travaillant avec des vecteurs. J'ai un `Vec` et je veux obtenir un sous-ensemble de ses éléments — c'est-à-dire une slice. Par exemple, j'écris un programme de traitement de données où j'ai un vecteur de nombres, et j'ai besoin de travailler uniquement avec les trois premiers éléments ou avec une plage de 2 à 5. J'ai essayé différentes approches, mais le compilateur génère des erreurs. Voici mon code : ```rust fn main() { let numbers = vec![10, 20, 30, 40, 50, 60]; // Je veux obtenir une slice avec les indices 1..3 (20, 30, 40) let slice = numbers[1..4]; // Erreur ! println!("{:?}", slice); } ``` Le compilateur parle de traits `Index` et `Range` — je ne comprends pas vraiment ce que cela signifie. J'ai aussi entendu dire qu'il y a une différence entre `&[T]` et `Vec`, mais comment les convertir correctement ? Et aussi : peut-on modifier les éléments d'une slice si le vecteur d'origine est mutable ? S'il vous plaît, expliquez avec des exemples concrets : 1. Comment obtenir correctement une slice immuable ? 2. Comment obtenir une slice mutable ?