ExpertiDict

Rust · Intermediário · Inglês · Técnico

Cow

/kaʊ/substantivo

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.

Veja também

Todos os termos de Rust