Considérations sur les traits FnOnce, FnMut et Fn FnOnce FnMut Fn

1. Explications du fonctionnement général

Les closures en Rust implémentent les traits FnOnce, FnMut et Fn, ce qui autorise les comportements suivants :

  • La closure devient propriétaire d’une variable, seulement une fois (FnOnce), c’est-à-dire que cela fonctionne uniquement si on n’appelle qu’une seule fois la fonction closure.

  • La closure emprunte une variable mutable (FnMut) selon &mut self.

  • La closure emprunte de façon non mutable une variable à sa portée (Fn) selon &self.

Ces trois scénarios correspondent aux différents usages que l’on peut faire d’une closure en Rust en termes d’emprunt et de propriété.

Ci-dessous la documentation en ligne de chacun de ces trois traits :

https://doc.rust-lang.org/stable/std/ops/trait.FnOnce.html

https://doc.rust-lang.org/std/ops/trait.FnMut.html

https://doc.rust-lang.org/std/ops/trait.Fn.html

2. Le mot-clé move move

Un scénario n’est pas possible avec l’implémentation de ces trois traits. Il s’agit de celui décrit ci-dessous :

« On veut une propriété effective par la fonction closure d’une variable donnée et l’on veut appeler autant de fois que l’on veut cette closure. »

On voit que l’usage attendu n’est pas permis par FnOnce : il n’y a pas de problème en termes de propriété...

Pour consulter la suite, découvrez le livre suivant :
couv_EIRUST.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Les closures, résumé des premières notions
Suivant
Introduction