Section courante

A propos

Section administrative du site

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 :

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).

  1. enum ExampleEnum {
  2.     VariantA,
  3.     VariantB,
  4. }
  5.  
  6. impl ExampleEnum {
  7.     fn new() -> Self {
  8.         Self::VariantA
  9.     }
  10. }
  11.  
  12. use ExampleEnum::*;
  13.  
  14. // Compile.
  15. let _ = VariantA;
  16.  
  17. // Ne compile pas !
  18. let n = new();

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 :

  1. fn f(x: &()) -> impl Sized { x }

En utilisant use<'_> pour une capture précise, cela peut être résolu :

  1. fn f(x: &()) -> impl Sized + use<'_> { x }

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.



Dernière mise à jour : Vendredi, le 1er Août 2025