move |
Déplacement |
|---|---|
| Rust | |
Syntaxe
|
let fermeture = move |paramètres| { // corps de la fermeture }; |
Paramètres
| Nom | Description |
|---|---|
| paramètres | Ce paramètre permet de définir les valeurs d'entrée que la fermeture accepte lorsqu'elle est appelée. |
| fermeture | Ce paramètre permet de représenter une fonction anonyme capable de capturer des variables de son contexte. |
| corps de la fermeture | Ce paramètre permet de contenir les instructions exécutées lorsque la fermeture est appelée. |
Description
Ce mot réservé permet de faire en sorte qu'une fermeture s'approprie toutes ses captures.
Remarques
Permet une capture de l'environnement d'une fermeture par valeur.
move convertit toutes les variables capturées par référence ou référence mutable en variables capturées par valeur.
Remarque : les fermetures de déplacement peuvent toujours implémenter Fn ou FnMut, même si elles capturent des variables par déplacement. En effet, les caractéristiques implémentées par un type de fermeture sont déterminées par ce que la fermeture fait aux valeurs capturées, et non par la manière dont elle les capture.
move est souvent utilisé lorsque des processus léger sont impliqués.
- let data = vec![1, 2, 3];
-
- std::thread::spawn(move || {
- println!("capturé {data:?} par valeur")
- }).join().unwrap();
-
- // les données ont été déplacées vers le processus léger généré, nous ne pouvons donc pas les utiliser ici
move est également valide avant un bloc désynchronisée :
Dernière mise à jour : Vendredi, le 1er Août 2025