Avatar ·

¿Cómo hacer un tipo solo movible (move), pero no copiable (Copy) en Rust?

¡Hola a todos! Empecé a estudiar Rust recientemente y me encontré con el concepto de ownership y los traits Copy y Clone. Creo que entendí que los tipos primitivos, como i32 o bool, implementan Copy, por lo que al asignarlos se copian y el original sigue disponible. Mientras que tipos más complejos, como String, solo implementan Clone, y al asignarlos se mueven (move). Pero tengo una pregunta: ¿puedo crear mi propio tipo (por ejemplo, una struct) que se comporte como String, es decir, que solo sea movible y no se pueda copiar accidentalmente? Por ejemplo, quiero hacer un tipo que represente un identificador único o algún recurso que no deba duplicarse. Si simplemente declaro la struct y agrego derive(Clone, Copy), se copiará en cada asignación. Pero si no agrego esos derive, ¿qué sucederá? Aquí hay un ejemplo de código que me confunde: ```rust struct MyType { value: i32, } fn main() { let a = MyType { value: 1