ExpertiDict

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

object safety

/ˈɑːbdʒɛkt ˈseɪfti/substantivo

Conjunto de regras que um trait precisa cumprir para ser usado como dyn Trait: sem métodos genéricos e sem devolver Self, por exemplo. A documentação atual diz 'dyn compatible'.

Onde usar

Aparece em erros como 'the trait is not dyn compatible' (antes, 'cannot be made into an object'). Métodos incompatíveis podem ser excluídos com where Self: Sized.

Em código

trait Ave { fn voa(&self); }
trait Clonavel {
  fn clona(&self) -> Self;
}
let _a: Option<Box<dyn Ave>> = None;
// dyn Clonavel dá erro: devolve Self

Exemplos

This trait isn't object safe because it returns Self.

Esse trait não é object safe porque devolve Self.

Add where Self: Sized to keep it object safe.

Adicione where Self: Sized para mantê-lo object safe.

Cuidado

Não tem relação com unsafe: a object safety trata apenas de ser possível montar a tabela de métodos do dyn.

Sinônimos

dyn compatibility, compatibilidade com dyn

Veja também

Todos os termos de Rust