ExpertiDict

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

generic associated types

/dʒəˈnɛrɪk əˈsoʊʃieɪtɪd taɪps/substantivo

Tipos associados com seus próprios parâmetros, como lifetimes ou tipos: type Item<'a>. Estáveis desde o Rust 1.65, permitem iteradores que emprestam de si mesmos.

Onde usar

Aparecem em traits do tipo lending iterator e em APIs que devolvem referências ligadas a &self. A sigla GAT é comum no dia a dia.

Em código

trait Janela {
  type Item<'a> where Self: 'a;
  fn pega<'a>(&'a self) -> Self::Item<'a>;
}
impl Janela for Vec<u8> {
  type Item<'a> = &'a [u8];
  fn pega<'a>(&'a self) -> &'a [u8] { self }
}

Exemplos

We need GATs for a lending iterator.

Precisamos de GATs para um lending iterator.

GATs landed in stable Rust 1.65.

Os GATs chegaram ao Rust estável na versão 1.65.

Cuidado

Têm alto custo de complexidade; muitas vezes um tipo associado simples ou um método genérico basta.

Sinônimos

GAT

Veja também

Todos os termos de Rust