ExpertiDict

Rust · Intermediário · Inglês · Técnico

newtype

/ˈnjuːtaɪp/substantivo

Padrão de envolver um tipo em uma struct de um único campo, como struct Metros(f64), para criar um tipo distinto sem custo em execução.

Onde usar

Usado para não confundir valores do mesmo tipo primitivo e para implementar traits externos em tipos externos, contornando a orphan rule.

Em código

struct Metros(f64);
struct Segundos(f64);
fn vel(m: Metros, s: Segundos) -> f64 {
  m.0 / s.0
}
let v = vel(Metros(10.0), Segundos(2.0));
println!("{v}");

Exemplos

Wrap the id in a newtype so it can't be mixed up.

Envolva o id em um newtype para não ser confundido.

A newtype lets us implement Display for Vec.

Um newtype nos deixa implementar Display para Vec.

Cuidado

O newtype não herda os métodos do tipo interno; é preciso repassá-los ou implementar Deref.

Sinônimos

tipo envelope

Veja também

Todos os termos de Rust