Rust Deref & DerefMut


Exemple

Les traits std::ops::Deref et std::ops::DerefMut sont utilisés pour surcharger l'opérateur de déréférencement, *x . Pour les types A et B ,

impl Deref<Target=B> for A

indique que le déréférencement d'une liaison de &A donnera un &B et,

impl DerefMut for A

indique que le déréférencement d'une liaison de &mut A donnera un &mut B

Deref (resp. DerefMut ) fournit également une fonction de langage utile appelée deref coercion , qui permet à a &A (resp. &mut A ) de forcer automatiquement a &B (resp. &mut B ). Ceci est couramment utilisé lors de la conversion de String en &str , as &String étant implicitement contraint à &str si nécessaire.


Remarque: DerefMut ne prend pas en charge la spécification du type résultant, il utilise le même type que Deref .

Remarque: En raison de l'utilisation d'un type associé (contrairement à AsRef ), un type donné ne peut implémenter que Deref et DerefMut au plus une fois.