
IntoIterator pour les tableaux
Il s'agit de la première version de Rust dans laquelle les tableaux implémentent le trait IntoIterator. Cela signifie que vous pouvez maintenant parcourir les tableaux par valeur*:
Code Rust : | Sélectionner tout |
1 2 3 | for i in [1, 2, 3] { .. } |
Auparavant, cela n'était possible que par référence, en utilisant &[1, 2, 3] ou [1, 2, 3].iter().
De même, vous pouvez maintenant passer des tableaux aux méthodes qui attendent un T: IntoIterator :
Code Rust : | Sélectionner tout |
let set = BTreeSet::from_iter([1, 2, 3]);
Code Rust : | Sélectionner tout |
1 2 3 | for (a, b) in some_iterator.chain([1]).zip([1, 2, 3]) { .. } |
Cela n'a pas été implémenté auparavant, en raison de problèmes de compatibilité descendante. Étant donné qu'IntoIterator était déjà implémenté pour les références aux tableaux, array.into_iter() déjà compilé dans les versions antérieures, se résolvant en (&array).into_iter().
À partir de cette version, les tableaux implémentent IntoIterator avec une petite solution de contournement pour éviter de casser le code. Le compilateur continuera à résoudre array.into_iter() en (&array).into_iter(), comme si l'implémentation de trait n'existait pas. Cela s'applique uniquement à la syntaxe d'appel de méthode .into_iter() et n'affecte aucune autre syntaxe telle que for e in [1, 2, 3], iter.zip([1, 2, 3]) ou IntoIterator::into_iter ([1, 2, 3]), qui se compilent tous correctement.
Étant donné que ce cas spécial pour .into_iter() n'est requis que pour éviter de casser le code existant, il est supprimé dans la nouvelle édition, Rust 2021, qui sortira plus tard cette année.
Motifs |
La syntaxe du modèle a été étendue pour prendre en charge | imbriqué n'importe où dans le motif. Cela vous permet d'écrire Some(1 | 2) au lieu de Some(1) | Some(2).
Code Rust : | Sélectionner tout |
1 2 3 4 5 | match result { Ok(Some(1 | 2)) => { .. } Err(MyError { kind: FileNotFound | PermissionDenied, .. }) => { .. } _ => { .. } } |
Identifiants Unicode
Les identifiants peuvent désormais contenir des caractères non ASCII. Tous les caractères d'identification valides en Unicode tels que définis dans UAX #31 peuvent désormais être utilisés. Cela inclut les caractères de nombreux...
La fin de cet article est réservée aux abonnés. Soutenez le Club Developpez.com en prenant un abonnement pour que nous puissions continuer à vous proposer des publications.