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.26.2 est désormais disponible en version stable
Et vient stabiliser le fonctionnement du pattern matching

Le , par Songbird

528PARTAGES

9  0 
Rust est un langage de programmation système axé sur la sécurité, la rapidité et la concurrence.

Pour mettre à jour votre version stable, il suffit d’exécuter la commande habituelle.

Code bash : Sélectionner tout
$ rustup update stable

Si vous ne disposez pas de rustup, vous pouvez en obtenir une copie sur la page de téléchargement du site officiel. N’hésitez pas également à consulter la release note de la 1.26.2 sur GitHub !

Quoi de neuf ?

De nouveaux correctifs ont été apportés, principalement axés sur les expressions (et les vérifications sous-jacentes) permises par le compilateur. Comme pour la 1.26.1, cette mise à jour n’a pour but que de stabiliser les fonctionnalités existantes.

Bogue dans la règle des emprunts mutables

En dehors des blocs unsafe, le compilateur ne permet pas deux accès en écriture sur une même ressource en simultané. Toutefois, un est bogue survenu, suite à un recyclage apporté par la 1.26.0 visant à améliorer l’ergonomie de match, permettant ainsi de casser la règle précédemment citée.

Ici, par exemple, nous disposons de deux accès en écriture sur bar au même moment.

Code Rust : Sélectionner tout
1
2
3
4
5
6
7
8
let mut foo = Some("foo".to_string()); 
let bar = &mut foo; 
match bar { 
    Some(baz) => { 
        bar.take(); // Should not be permitted, as baz has a unique reference to the bar pointer. 
    }, 
    None => unreachable!(), 
}

En réponse à cela, la version 1.26.2 vient corriger ce problème. Désormais, la vérification est interrompue et renvoie une erreur lorsque le cas survient.

Code Rust : Sélectionner tout
1
2
3
4
5
6
7
8
9
10
11
12
error[E0499]: cannot borrow `*bar` as mutable more than once at a time 
 --> src/main.rs:6:9 
  | 
5 |     Some(baz) => { 
  |          --- first mutable borrow occurs here 
6 |         bar.take(); // Should not be permitted, as baz has a ... 
  |         ^^^ second mutable borrow occurs here 
... 
9 | } 
  | - first borrow ends here 
  
error: aborting due to previous error

En définitive, l’équipe Rust a pris la décision de publier ce patch le plus rapidement possible pour éviter d’étendre inutilement le laps de temps pendant lequel les compilateurs stables sont affectés par ce bogue.

Source

Le blog de l'équipe Rust

Voir aussi

La version stable de Rust 1.26.1 est désormais disponible !

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