Rc
Rc
는 참조 카운팅 공유 포인터입니다. 여러 위치에서 동일한 데이터를 참조해야할 경우 사용합니다:
use std::rc::Rc; fn main() { let a = Rc::new(10); let b = Rc::clone(&a); println!("a: {a}"); println!("b: {b}"); }
This slide should take about 5 minutes.
Rc
는 참조 카운트를 통해 참조가 있는 동안은Rc
가 가리키고 있는 값이 메모리에서 해제되지 않음을 보장합니다.- C++의
std::shared_ptr
와 유사합니다. clone
은 비용이 거의 들지 않습니다. 같은 곳을 가리키는 포인터를 하나 더 만들고, 참조 카운트를 늘립니다. 포인터가 가리키는 값 자체가 복제(깊은 복제)되지는 않으며, 그래서 코드에서 성능 문제가 있는지 검토할 때 일반적으로Rc
를clone
하는 것은 무시할 수 있습니다.make_mut
는 실제로 필요한 경우에 내부 값을 복제하고("clone-on-write") 가변 참조를 반환합니다.- 참조 카운트를 확인하려면
Rc::strong_count
를 사용하세요. Rc::downgrade
gives you a weakly reference-counted object to create cycles that will be dropped properly (likely in combination withRefCell
).