Avatar ·

Como criar um tipo que seja apenas movível (move), mas não copiável (Copy) em Rust?

Olá a todos! Comecei a estudar Rust recentemente e me deparei com o conceito de ownership (propriedade) e as traits Copy e Clone. Acho que entendi que tipos primitivos, como i32 ou bool, implementam Copy, então ao atribuir eles são copiados e o original permanece acessível. Já tipos mais complexos, como String, são apenas Clone, e ao atribuir eles são movidos (move). Mas surgiu uma dúvida: posso criar meu próprio tipo (por exemplo, uma struct) que se comporte como String — ou seja, que seja apenas movível e não possa ser copiado acidentalmente? Por exemplo, quero criar um tipo que represente um identificador único ou algum recurso que não deva ser duplicado. Se eu simplesmente declarar uma struct e adicionar derive(Clone, Copy), ela será copiada a cada atribuição. E se eu não adicionar esses derive, o que acontece? Aqui está um exemplo de código que me confunde: ```rust struct MyType { value: i32, } fn main() { let a = MyType { value: 1