Rc
Rc
es un puntero compartido de referencia contada. Utilízalo cuando necesites hacer referencia a los mismos datos desde varios lugares:
use std::rc::Rc; fn main() { let a = Rc::new(10); let b = Rc::clone(&a); println!("a: {a}"); println!("b: {b}"); }
- Consulta
Arc
yMutex
si te encuentras en un contexto multihilo. - Puedes degradar un puntero compartido en un puntero
Weak
para crear ciclos que se abandonarán.
This slide should take about 5 minutes.
- El recuento de
Rc
asegura que el valor que contiene sea válido mientras haya referencias. Rc
en Rust es comostd::shared_ptr
en C++.Rc::clone
es simple: crea un puntero en la misma asignación y aumenta el recuento de referencias. No hace clones completos y, por lo general, se puede ignorar cuando se buscan problemas de rendimiento en el código.make_mut
clona el valor interno si es necesario ("copiar al escribir") y devuelve una referencia mutable.- Comprueba el recuento de referencias con
Rc::strong_count
. Rc::downgrade
gives you a weakly reference-counted object to create cycles that will be dropped properly (likely in combination withRefCell
).