¿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