Déplacement
En Rust, généralement, utiliser une valeur la déplace, comme std::move
en
C++11.
Mais les règles sont un peu différentes :
- Tous les types supportent le déplacement, on ne peut pas l’interdire.
- Le déplacement est toujours un
memcpy()
(~facile à éliminer pour l’optimiseur). - L’absence de use-after-move est vérifiée, donc le code suivant ne compile pas.
#![allow(unused)] fn main() { // Définition d'une valeur non copiable let numbers = vec![1.2, 3.4, 5.6]; // Utilisation de la valeur => Déplacement for x in numbers { println!("{x}"); } // Réutilisation après déplacement => Erreur ! println!("{numbers:?}"); }