Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Rc

Rc یک اشاره‌گر مشترک با شمارش ارجاع است. از این هنگام استفاده کنید که نیاز دارید به داده‌های یکسان از مکان‌های متعدد اشاره کنید:

use std::rc::Rc;

fn main() {
    let a = Rc::new(10);
    let b = Rc::clone(&a);

    println!("a: {a}");
    println!("b: {b}");
}
  • اگر در یک محیط چند-رشته‌ای (multi-threaded) هستید، به Arc و Mutex نگاه کنید.
  • شما می‌توانید یک اشاره‌گر مشترک را به یک اشاره‌گر Weak تغییر دهید تا دوره‌هایی ایجاد کنید که در نهایت حذف خواهند شد.
This slide should take about 5 minutes.
  • شمارش Rc تضمین می‌کند که مقدار درون آن به مدت زمانی که ارجاع‌هایی وجود دارد، معتبر خواهد بود.
  • Rc در Rust مشابه std::shared_ptr در ++C است.
  • Rc::clone ارزان است: این تابع یک اشاره‌گر به همان تخصیص (allocation) ایجاد می‌کند و شمارش ارجاع را افزایش می‌دهد. این عمل کپی عمیق (deep clone) انجام نمی‌دهد و به طور کلی هنگام جستجو برای مسائل عملکردی در کد می‌توان آن را نادیده گرفت.
  • make_mut در واقع در صورت نیاز مقدار درونی را کپی می‌کند (“clone-on-write”) و یک ارجاع قابل تغییر (mutable reference) برمی‌گرداند.
  • از Rc::strong_count برای بررسی شمارش ارجاع‌ها استفاده کنید.
  • Rc::downgrade یک شیء با شمارش ارجاع ضعیف به شما می‌دهد تا دوره‌هایی ایجاد کنید که به درستی حذف خواهند شد (احتمالاً به همراه RefCell).