ExpertiDict

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

monomorfização

/mo.no.moʁ.fi.za.ˈsɐ̃w̃/substantivo

Processo em que o compilador gera uma cópia do código genérico para cada tipo concreto usado. Dá velocidade igual à do código manual, ao custo de binários maiores.

Onde usar

Aparece ao discutir genéricos versus dyn e o tamanho do binário. Em crates com muito código genérico, é uma das causas de compilações lentas.

Em código

fn mostra<T: ToString>(x: T) -> String {
  x.to_string()
}
mostra(1);   // gera mostra::<i32>
mostra(1.5); // gera mostra::<f64>

Exemplos

A monomorfização gera uma função para cada tipo.

O binário cresceu por causa da monomorfização.

Cuidado

Não acontece com trait objects: dyn usa uma só versão do código e chama os métodos por uma tabela.

Sinônimos

monomorphization

Antônimos

dispatch dinâmico

Origem

Do grego monos, 'único', e morphe, 'forma': cada cópia tem uma forma única.

Veja também

Todos os termos de Rust