Rust · Essencial · Português · Técnico
abstração de custo zero
Princípio de que recursos de alto nível, como iteradores e genéricos, compilam para código tão rápido quanto o equivalente escrito à mão. O que você não usa, não paga.
Onde usar
É argumento comum para escolher Rust em sistemas, citado em discussões sobre iteradores versus laços. Em review, serve para defender código mais legível sem medo de perder desempenho.
Em código
let v = vec![1, 2, 3, 4];
// iteradores e closures...
let s: i32 = v.iter().map(|x| x * 2).sum();
// ...compilam como um laço manual
let mut t = 0;
for x in &v {
t += x * 2;
}Exemplos
Iteradores são uma abstração de custo zero em Rust.
Não precisa trocar por um laço, é custo zero.
Cuidado
O custo zero é em tempo de execução: genéricos e macros podem aumentar o tempo de compilação e o tamanho do binário.
Sinônimos
zero-cost abstraction
Origem
Princípio herdado do C++, associado a Bjarne Stroustrup.