ExpertiDict

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

sealed trait

/siːld treɪt/substantivo

Padrão em que um trait público só pode ser implementado dentro da própria crate, porque exige um supertrait inacessível de fora. Permite evoluir a API sem quebrar usuários.

Onde usar

Usado por bibliotecas para poder acrescentar métodos a um trait sem ser breaking change. O usuário pode usar o trait, mas não implementá-lo.

Em código

mod selo {
  pub trait Selado {}
}
pub trait Api: selo::Selado {}
struct Meu;
impl selo::Selado for Meu {}
impl Api for Meu {}
// quem usa a crate não acessa selo

Exemplos

We sealed the trait so we can add methods later.

Selamos o trait para poder adicionar métodos depois.

Users can call it but can't implement a sealed trait.

Os usuários podem chamar, mas não implementar um sealed trait.

Cuidado

Não é um recurso da linguagem, e sim um truque de visibilidade; precisa ser documentado, senão o erro de quem tenta implementar confunde.

Sinônimos

trait selado

Veja também

Todos os termos de Rust