use |
Utilise |
|---|---|
| Rust | |
Syntaxe
| use chemin::vers::élément; |
Paramètres
| Nom | Description |
|---|---|
| chemin::vers::élément | Ce paramètre permet de spécifier le chemin complet vers un élément (fonction, type, module,...) à importer dans la portée courante. |
Description
Ce mot réservé permet d'amener les symboles dans la portée.
Remarques
Importez ou renommez des éléments d'autres caisses ou modules, utilisez des valeurs sous la sémantique des clones ergonomiques ou spécifiez une capture précise avec use<..>.
Importation d'éléments
Le mot clef use permet de raccourcir le chemin d'accès à un élément de module. Il peut apparaître dans les modules, les blocs et même les fonctions, généralement en haut de la liste.
L'utilisation la plus courante du mot clef est use path::to::item;, bien que plusieurs raccourcis pratiques soient pris en charge :
- Lier simultanément une liste de chemins ayant un préfixe commun, en utilisant la syntaxe d'accolades de type glob use a::b::{c, d, e::f, g::h::i};
- Lier simultanément une liste de chemins ayant un préfixe commun et leur module parent commun, en utilisant le mot-clé self, par exemple use a::b::{self, c, d::e};
- Réassocier le nom cible comme un nouveau nom local, en utilisant la syntaxe use p::q::r as x;. Ceci peut également être utilisé avec les deux dernières fonctionnalités : use a::b::{self as ab, c as abc}.
- Liaison de tous les chemins correspondant à un préfixe donné, en utilisant la syntaxe générique astérisque use a::b::*;.
- Imbrication multiple de groupes des fonctionnalités précédentes, par exemple use a::b::{self as ab, c, d::{*, e::f}};
- Réexportation avec des modificateurs de visibilité tels que pub use a::b;
- Importation avec _ pour importer uniquement les méthodes d'un trait sans le lier à un nom (pour éviter les conflits par exemple) : use ::std::io::Read as _;.
L'utilisation de qualificateurs de chemin tels que crate, super ou self est prise en charge : utilisez crate::a::b;.
Notez que lorsque le caractère générique * est utilisé sur un type, il n'importe pas ses méthodes (bien que pour les énumérations, il importe les variantes, comme illustré dans l'exemple ci-dessous).
Capture précise
La syntaxe use<..> est utilisée dans certaines limites du trait impl pour contrôler les paramètres génériques capturés. Ceci est important pour les types de trait impl de position de retour (RPIT), car elle affecte la vérification d'emprunt en contrôlant les paramètres génériques utilisables dans le type caché.
Par exemple, la fonction suivante présente une erreur sans capture précise dans Rust 2021 et les éditions antérieures :
En utilisant use<'_> pour une capture précise, cela peut être résolu :
Cette syntaxe spécifie que la durée de vie élidée doit être capturée et donc disponible pour utilisation dans le type masqué.
Dans Rust 2024, les types opaques capturent automatiquement tous les paramètres de durée de vie concernés. La syntaxe use<..> permet de désactiver cette valeur par défaut.
Clones ergonomiques
Utilisez une valeur, en copiant son contenu si la valeur implémente Copy, en clonant son contenu si la valeur implémente UseCloned ou en la déplaçant dans le cas contraire.