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
eMutex
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 Ă© comostd::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 comRefCell
).