RefCell y mutabilidad interior en Rust
RefCell verifica los préstamos en ejecución, así que un valor compartido aún puede mutarse.
use std::cell::RefCell;
struct Log {
entries: RefCell<Vec<String>>,
}
impl Log {
fn record(&self, line: &str) {
self.entries.borrow_mut().push(line.to_string());
}
fn count(&self) -> usize {
self.entries.borrow().len()
}
}
fn main() {
let log = Log { entries: RefCell::new(Vec::new()) };
log.record("started");
log.record("finished");
println!("{} entries", log.count());
println!("{:?}", log.entries.borrow());
}
Cómo funciona
borrow_muthace panic si ya hay un préstamo vigente.- El valor mismo no necesita una vinculación
mut. - Mantén los préstamos cortos para mantener lejos los panics.
Palabras clave y builtins usados aquí
StringVecfnimplletselfstrstructuseusize
El intento, en números
- Líneas
- 23
- Caracteres a escribir
- 417
- Tokens
- 147
- Ritmo de tres estrellas
- 110 tpm
Al ritmo de tres estrellas de 110 tokens por minuto, este intento toma unos 80 segundos.
Paso 1 de 3 en Mutabilidad interior; paso 7 de 11 en Lifetimes y mutabilidad interior.