Rc

Rc Ă© um ponteiro compartilhado com contagem de referĂȘncia. Use-o quando precisar consultar os mesmos dados a partir de vĂĄrios locais:

use std::rc::Rc;

fn main() {
    let a = Rc::new(10);
    let b = Rc::clone(&a);

    println!("a: {a}");
    println!("b: {b}");
}
  • Veja Arc e Mutex se vocĂȘ estiver em um contexto multi-thread.
  • VocĂȘ pode demover (downgrade) um ponteiro compartilhado para um ponteiro Weak (fraco) para criar ciclos que serĂŁo descartados.
This slide should take about 5 minutes.
  • O contador do Rc garante que os seus valores contidos sejam vĂĄlidos enquanto houver referĂȘncias.
  • Rc em Rust Ă© como std::shared_ptr em C++.
  • Rc::clone Ă© barato: ele cria um ponteiro para a mesma alocação e aumenta a contagem de referĂȘncia. Ele nĂŁo faz um “clone profundo” (deep clone) e geralmente pode ser ignorado ao procurar problemas de desempenho no cĂłdigo.
  • make_mut realmente clona o valor interno se necessĂĄrio (“clone-on-write”) e retorna uma referĂȘncia mutĂĄvel.
  • Use Rc::strong_count para verificar a contagem de referĂȘncia.
  • Rc::downgrade fornece um objeto com contagem de referĂȘncia fraca (weakly reference-counted) para criar ciclos que serĂŁo descartados corretamente (provavelmente em combinação com RefCell).