typestar

Rc<RefCell<T>> en Rust

Propiedad compartida más mutabilidad interior: varios handles a un mismo valor mutable.

use std::cell::RefCell;
use std::rc::Rc;

fn main() {
    let shared = Rc::new(RefCell::new(vec!["basics".to_string()]));

    let editor = Rc::clone(&shared);
    editor.borrow_mut().push("traits".to_string());

    let viewer = Rc::clone(&shared);
    println!("{:?}", viewer.borrow());
    println!("owners: {}", Rc::strong_count(&shared));

    shared.borrow_mut().retain(|t| t != "basics");
    println!("{:?}", editor.borrow());
}

Cómo funciona

  1. Rc cuenta dueños; RefCell permite la mutación.
  2. Cada clone ve el mismo valor subyacente.
  3. Esta combinación es solo para un hilo.

Palabras clave y builtins usados aquí

El intento, en números

Líneas
16
Caracteres a escribir
404
Tokens
143
Ritmo de tres estrellas
110 tpm

Al ritmo de tres estrellas de 110 tokens por minuto, este intento toma unos 78 segundos.

Escribe este fragmento

Paso 2 de 3 en Mutabilidad interior; paso 8 de 11 en Lifetimes y mutabilidad interior.

← Anterior Siguiente →