IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Vous êtes nouveau sur Developpez.com ? Créez votre compte ou connectez-vous afin de pouvoir participer !

Vous devez avoir un compte Developpez.com et être connecté pour pouvoir participer aux discussions.

Vous n'avez pas encore de compte Developpez.com ? Créez-en un en quelques instants, c'est entièrement gratuit !

Si vous disposez déjà d'un compte et qu'il est bien activé, connectez-vous à l'aide du formulaire ci-dessous.

Identifiez-vous
Identifiant
Mot de passe
Mot de passe oublié ?
Créer un compte

L'inscription est gratuite et ne vous prendra que quelques instants !

Je m'inscris !

Rust 1.53.0 est disponible et s'accompagne de IntoIterator pour les tableaux
Cargo prend désormais en charge les référentiels git où la branche HEAD par défaut n'est pas "master"

Le , par Stéphane le calme

102PARTAGES

13  0 
L'équipe Rust a annoncé la disponibilité de Rust 1.53.0. Passons en revue les améliorations.

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.

Une erreur dans cette actualité ? Signalez-nous-la !