Avatar ·

Comment rendre un type uniquement déplaçable (move), mais pas copiable (Copy) en Rust ?

Bonjour à tous ! J'ai commencé à apprendre Rust récemment et j'ai rencontré le concept de possession (ownership) et les traits Copy et Clone. J'ai à peu près compris que les types primitifs, comme i32 ou bool, implémentent Copy, donc lors de l'affectation, ils sont copiés et l'original reste accessible. Les types plus complexes, comme String, sont seulement Clone, et lors de l'affectation, ils sont déplacés (move). Mais j'ai une question : puis-je créer mon propre type (par exemple, une structure) qui se comporte comme String — c'est-à-dire qu'il soit uniquement déplaçable, et qu'on ne puisse pas le copier accidentellement ? Par exemple, je veux créer un type qui représente un identifiant unique ou une ressource qui ne doit pas être dupliquée. Si je déclare simplement une structure et ajoute derive(Clone, Copy), elle sera copiée à chaque affectation. Et si je n'ajoute pas ces derive, que se passera-t-il ? Voici un exemple de code qui me trouble : ```rust struct MyType { value: i32, } fn main() { let a = MyType { value: 1