Rust | References and Borrowing

การอ้างถึง (Reference)
การใช้ References ทำให้เราสามารถเข้าถึงข้อมูลได้โดยที่ไม่ต้องเป็นเจ้าของข้อมูลนั้นก่อน
  • '&' ampersands คือเครื่องหมายการอ้างถึงข้อมูล
  • การใช้เครื่องหมาย '&' ทำให้เราสามารถเข้าถึงข้อมูลได้โดยไม่ต้องเปลี่ยนเจ้าของมาเป็นเรา
  • ตัวอย่าง
    let s = String::from("data");
    println!(&s);
    s ยังคงเป็นเจ้าของข้อมูล "data" อยู่ ฟังก์ชั่น println แค่ขอยืมการเข้าถึงข้อมูลนั้นเพื่อทำการปริ้น หลังจาก println ทำงานเสร็จ s ก็กลับมาถือครองข้อมูล "data" ดังเดิม
  • ฟังก์ชัน println จะสามารถอ้างถึง ข้อมูล "data" ได้ตราบเท่าที่พารามิเตอร์ของฟังก์ชัน println ชีวิตอยู่
  • การยืม (Borrowing)
    การยืมใช้สำหรับการขอสิทธิเข้าถึงข้อมูลดังตัวอย่างด้านบน
    หากเราต้องการยืมด้วย และมีสิทธิในการแก้ไขด้วย ต้องใช้การยืม แบบ &mut s
    ทั้งนี้ s ต้องประกาศเป็น mut ถึงจะสามารถทำได้
    fn main(){
        let mut s = String::from("data");
        print(&mut s); // ยืมแบบสามารถแก้ไขข้อมูล "data" ได้ด้วย
        println!("in main: {}", s);
    }
    
    fn print(n: &mut String) {
        println!("in print : {}", n);
        n.push_str(" change here");
    }
    ผลลัพท์
    in print : data
    in main: data change here
    โปรแกรมสามารถยืมได้แค่ทีละตัวแปร ไม่สามารถยืมได้พร้อมกันหลายตัวแปรได้ถ้าหากมันเป็น mut คือข้อมูลที่สามารถเปลี่ยนแปลงได้ ตามกฎ

    43

    This website collects cookies to deliver better user experience

    Rust | References and Borrowing