Rust · Essencial · Inglês · Técnico
derive
Atributo que gera automaticamente a implementação de traits comuns, como Debug, Clone e PartialEq, a partir da definição da struct ou do enum.
Onde usar
Aparece logo acima de quase toda struct, como #[derive(Debug, Clone)]. Em review, só se deriva o que faz sentido, pois Copy ou Eq criam compromissos de API.
Em código
#[derive(Debug, Clone, PartialEq)]
struct P { x: i32 }
let a = P { x: 1 };
let b = a.clone();
println!("{:?} {}", a, a == b);Exemplos
Just derive Debug on it.
É só derivar Debug nele.
The derive fails because one field isn't Clone.
O derive falha porque um campo não é Clone.
Cuidado
Derive exige que todos os campos também implementem o trait; um campo sem Debug quebra o derive de Debug.
Sinônimos
derivação
Origem
Do latim derivare, 'desviar um curso de água'.