ExpertiDict

Rust · Avançado · Inglês · Técnico

orphan rule

/ˈɔːɹfən ruːl/substantivo

Regra de coerência que só permite implementar um trait para um tipo se o trait ou o tipo forem definidos na sua crate. Evita impls conflitantes entre crates.

Onde usar

Aparece como o erro E0117 ao tentar implementar Display para Vec<T>. O contorno comum é o padrão newtype, com um tipo local.

Em código

struct Meu;
// ok: o tipo Meu é local
impl Default for Meu {
  fn default() -> Self { Meu }
}
// erro: trait e tipo vêm de fora
// impl std::fmt::Display for Vec<u8> {}

Exemplos

The orphan rule stops me from implementing it.

A orphan rule me impede de implementar isso.

Use a newtype to get around the orphan rule.

Use um newtype para contornar a orphan rule.

Cuidado

Usar um tipo local como parâmetro, como Vec<Meu>, não contorna a regra: o Vec continua sendo externo.

Sinônimos

regra do órfão

Veja também

Todos os termos de Rust