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 mut a = Rc::new(10); let mut 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.
- 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
lhe fornece um objeto contador de referĂȘncias âfracoâ (weak)_ para criar ciclos que podem ser apropriadamente descartados (provavelmente combinados comRefCell
, no prĂłximo slide).