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.62.0 est disponible et s'accompagne de la commande cargo add, qui permet d'ajouter ou de modifier des dépendances

Le , par Stéphane le calme

7PARTAGES

18  0 
L'équipe Rust a annoncé la disponibilité de la version 1.62.0. Passons en revue les nouveautés et améliorations.

cargo add

Vous pouvez maintenant ajouter de nouvelles dépendances directement depuis la ligne de commande en utilisant cargo add. Cette commande prend en charge la spécification des fonctionnalités et des versions. Elle peut également être utilisée pour modifier des dépendances existantes.

Par exemple :

Code Rust : Sélectionner tout
1
2
3
cargo add log 
cargo add serde --features derive 
cargo add nom@5

variantes d'énumération #[default]

Vous pouvez maintenant utiliser #[derive(Default)] sur les énumérations si vous spécifiez une variante par défaut. Par exemple, jusqu'à présent, vous deviez écrire manuellement une implémentation par défaut pour cette énumération*:

Code Rust : Sélectionner tout
1
2
3
4
5
6
7
#[derive(Default)] 
enum Maybe<T> { 
    #[default] 
    Nothing, 
  
    Something(T), 
}

En fait, #[derive(Default)] n'est pas utilisable sur les enum. Pour remédier partiellement à cette situation, un attribut #[default] est introduit qui peut être attaché aux variantes d'unité. Cela vous permet d'utiliser #[derive(Default)] sur les énumérations. À partir de maintenant, seules les variantes "unitaires" (variantes qui n'ont pas de champs) peuvent être marquées #[default]. Vous pouvez donc maintenant écrire*:

Code Rust : Sélectionner tout
1
2
3
4
5
6
7
#[derive(Default)] 
enum Padding { 
    Space, 
    Zero, 
    #[default] 
    None, 
}

La possibilité d'ajouter des valeurs par défaut aux champs des variantes d'énumération ne signifie pas que vous pouvez soudainement [C]#[derive(Default)][/B] sur l'énumération. Un compilateur Rust n'aura toujours aucune idée de la variante que vous souhaitez utiliser par défaut. Cette RFC ajoute la possibilité de marquer une variante d'unité avec #[default]*:

Code Rust : Sélectionner tout
1
2
3
4
5
6
7
#[derive(Default)] 
enum Ingredient { 
    Tomato, 
    Onion, 
    #[default] 
    Lettuce, 
}

Maintenant, le compilateur sait que Ingredient::Lettuce doit être considéré comme la valeur par défaut et générera en conséquence une implémentation appropriée*:

Code Rust : Sélectionner tout
1
2
3
4
5
impl Default for Ingredient { 
    fn default() -> Self { 
        Ingredient::Lettuce 
    } 
}

Notez qu'après qu'un cfg-stripping s'est produit, c'est une erreur d'avoir #[default] spécifié sur zéro ou plusieurs variantes.

Comme des champs peuvent être ajoutés aux variantes #[non_exhaustive] qui nécessitent des bornes supplémentaires, il n'est pas permis de placer #[default] et #[non_exhaustive] sur la même variante.


Des mutex plus fins et plus rapides sous Linux

Auparavant, Mutex, Condvar et RwLock étaient soutenus par la bibliothèque pthreads sous Linux. Les verrous pthreads prennent en charge plus de fonctionnalités que les API Rust elles-mêmes, y compris la configuration d'exécution, et sont conçus pour être utilisés dans des langages avec moins de garanties statiques que celles fournies par Rust.

L'implémentation mutex, par exemple, est de 40 octets et ne peut pas être déplacée. Cela a forcé la bibliothèque standard à allouer une box dans les coulisses pour chaque nouveau mutex pour les plateformes qui utilisent des pthreads.

La bibliothèque standard de Rust est désormais livrée avec une implémentation brute basée sur futex de ces verrous sous Linux, qui est très légère et ne nécessite pas d'allocation supplémentaire. Dans la version 1.62.0, Mutex n'a besoin que de 5 octets pour son état interne sous Linux, bien que cela puisse changer dans les futures versions.

Cela fait partie d'un long effort pour améliorer l'efficacité des types de verrous de Rust, qui comprend des améliorations précédentes sur Windows telles que le déballage de ses primitives.

API stabilisées

Les méthodes et implémentations de traits suivantes sont désormais stabilisées*:
  • bool::then_some
  • f32::total_cmp
  • f64::total_cmp
  • Stdin::lines
  • windows::CommandExt::raw_arg
  • impl<T: Default> Default for AssertUnwindSafe<T>
  • From<Rc<str>> for Rc<[u8]>
  • From<Arc<str>> for Arc<[u8]>
  • FusedIterator for EncodeWide
  • RDM intrinsics on aarch64

Source : Rust

Voir aussi :

Les applications Rust sont-elles plus rapides que leurs équivalents en C ? C'est ce que suggèrent plusieurs benchmarks qui comparent les deux langages de programmation de la filière système
« Rust est le futur de la programmation système et C le nouvel assembleur », d'après un ingénieur d'Intel qui explique pourquoi il est pertinent de passer à Rust

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