Rust · Avançado · Inglês · Técnico
generic associated types
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