Rust · Avançado · Inglês · Técnico
sealed trait
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 seloExemplos
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