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
ArcyMutexsi te encuentras en un contexto multihilo. - Puedes degradar un puntero compartido en un puntero
Weakpara crear ciclos que se abandonarán.
This slide should take about 5 minutes.
- El recuento de
Rcasegura que el valor que contiene sea válido mientras haya referencias. Rcen Rust es comostd::shared_ptren C++.Rc::clonees 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_mutclona el valor interno si es necesario (“copiar al escribir”) y devuelve una referencia mutable.- Comprueba el recuento de referencias con
Rc::strong_count. Rc::downgradeofrece un objeto de referencia contada debil para crear ciclos que que se borraran propiamente (probablemente en combinación conRefCell).