Rust · Intermediário · Inglês · Técnico
Cow
Enum Cow (clone on write) que guarda dados emprestados ou próprios. Só aloca uma cópia quando precisa modificar, evitando custo no caminho comum.
Onde usar
Aparece em funções que quase sempre devolvem o texto original e só às vezes um alterado, como sanitizadores. Em review, serve para evitar uma alocação à toa.
Em código
use std::borrow::Cow;
fn limpa(s: &str) -> Cow<str> {
if s.contains(' ') {
Cow::Owned(s.replace(' ', "_"))
} else {
Cow::Borrowed(s)
}
}Exemplos
Return a Cow so we only allocate when we change it.
Devolva um Cow para só alocar quando houver mudança.
The Cow stayed borrowed because nothing needed escaping.
O Cow continuou emprestado porque nada precisou de escape.
Cuidado
Não é uma String escondida: a variante Borrowed não aloca nada, e só ao alterar o Cow ele vira Owned.
Sinônimos
clone on write
Origem
Sigla de clone on write, 'clonar ao escrever'; a palavra também significa 'vaca' em inglês.