ExpertiDict

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

mutabilidade interior

/mu.ta.bi.li.ˈda.d͡ʒi ĩ.te.ˈɾjoʁ/substantivo

Padrão que permite alterar um valor por uma referência compartilhada, usando tipos como Cell, RefCell e Mutex. As regras de empréstimo passam a ser conferidas por dentro desses tipos.

Onde usar

Entra em cena quando o design exige estado compartilhado, como caches e contadores. Em review, a pergunta é se o estado precisa mesmo ser mutado por trás de &self.

Em código

use std::cell::Cell;
let c = Cell::new(1);
c.set(c.get() + 1); // c não é mut
println!("{}", c.get());

Exemplos

Usei mutabilidade interior para o cache, com RefCell.

Cell é mutabilidade interior sem custo de checagem.

Cuidado

Não quebra a segurança de memória: o tipo garante as regras por dentro, com checagem em execução ou com travas.

Sinônimos

interior mutability

Veja também

Todos os termos de Rust