Rust · Avançado · Português · Técnico
monomorfização
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.