Rust · Essencial · Português · Técnico
genéricos
Recurso para escrever funções, structs e enums que funcionam com vários tipos, declarados entre colchetes angulares. O compilador gera código específico para cada tipo usado.
Onde usar
Aparece como <T> em Vec<T>, Option<T> e em funções reutilizáveis, quase sempre com bounds de trait. Sem bounds, quase nada se pode fazer com um T.
Em código
fn maior<T: PartialOrd>(a: T, b: T) -> T {
if a > b { a } else { b }
}
println!("{}", maior(3, 7));
println!("{}", maior("a", "b"));Exemplos
Usei genéricos para a função aceitar qualquer número.
Sem bound de trait, o genérico não sabe comparar.
Cuidado
Não é tipagem dinâmica nem dyn: os genéricos são resolvidos na compilação, sem custo em execução.
Sinônimos
generics