وام گیری (Borrowing)
گاهی می خواهی یک مقدار را «بدون گرفتن مالکیت» استفاده کنی. در راست، این کار با «ارجاع (Reference)» انجام می شود. به این کار «وام گیری (Borrowing)» می گویند.
ارجاع چیست؟
ارجاع، نگاه کردن به مقدار بدون مالک شدن است. با نماد & می سازی.
fn main() {
let a = String::from("Hello");
let b = &a;
println!("a = {}", a);
println!("b = {}", b);
}
نکته: چون b فقط قرض می گیرد، مالکیت نزد a می ماند.
ارجاع قابل تغییر (Mutable Reference)
اگر می خواهی مقدار را از طریق ارجاع عوض کنی، ارجاع باید mut باشد.
fn main() {
let mut name = String::from("John");
let name_ref = &mut name;
name_ref.push_str(" Doe");
println!("{}", name_ref);
}
هشدار: هم زمان فقط «یک» ارجاع قابل تغییر مجاز است.
چرا وام گیری مهم است؟
وام گیری، استفاده ی امن بدون انتقال مالکیت را ممکن می کند. همچنین، از clone اضافی جلوگیری می کند و برنامه را سریع تر می کند.
گام های تمرین
- یک
Stringبساز و یک ارجاع ساده بگیر. - هر دو را چاپ کن و نتیجه را بررسی کن.
- یک نسخه
mutبساز و متن را تغییر بده. - قانون «یک ارجاع قابل تغییر» را رعایت کن.
جمع بندی سریع
- ارجاع، مالکیت را جابه جا نمی کند.
- با
&ارجاع می گیری. - برای تغییر، ارجاع باید
mutباشد. - فقط یک ارجاع
mutهم زمان مجاز است.
برای پیش نیازها، مالکیت را ببین. همچنین، رشته ها را مرور کن. آموزش وام گیری در راست را نشان گذاری کن.