Rust · Essencial · Inglês · Técnico
Copy
Trait marcador para tipos simples cuja cópia bit a bit é barata, como inteiros. Ao atribuir um valor Copy, o original continua válido, sem move.
Onde usar
Você deriva Copy em structs pequenas para evitar erros de valor movido. Tipos com Drop ou com dados no heap, como String, não podem ser Copy.
Em código
#[derive(Clone, Copy)]
struct Ponto { x: i32, y: i32 }
let p = Ponto { x: 1, y: 2 };
let q = p; // p continua válido
println!("{} {}", p.x, q.y);Exemplos
Derive Copy so we can pass it by value.
Derive Copy para podermos passar por valor.
String can't be Copy because it owns heap data.
String não pode ser Copy porque é dona de dados no heap.
Cuidado
Copy não é o mesmo que Clone: todo tipo Copy também é Clone, mas só Copy faz a cópia acontecer de forma automática.
Antônimos
move