ทำความเข้าใจการเพิ่มขึ้นในระบบการเป็นเจ้าของของสนิม
Upbind เป็นคำที่ใช้ในบริบทของระบบการเป็นเจ้าของของ Rust มันอ้างถึงกระบวนการ "อัปเดต" การโยงของการอ้างอิงหรือการอ้างอิงที่ไม่แน่นอนเพื่อชี้ไปที่ค่าใหม่ ใน Rust เมื่อคุณสร้างการอ้างอิงหรือการอ้างอิงที่ไม่แน่นอนไปยังอ็อบเจ็กต์ การอ้างอิงจะถูก "ผูก" กับอ็อบเจ็กต์นั้น ซึ่งหมายความว่าการอ้างอิงชี้ไปที่วัตถุและสามารถเข้าถึงฟิลด์ของมันได้ อย่างไรก็ตาม หากคุณต้องการอัปเดตการอ้างอิงให้ชี้ไปที่ออบเจ็กต์อื่น คุณต้อง "อัปไบนด์" การอ้างอิง การอัปไบดิ้งเป็นสิ่งจำเป็นเมื่อคุณมีการอ้างอิงหรือการอ้างอิงที่ไม่แน่นอนไปยังออบเจ็กต์ แต่คุณต้องการแทนที่ออบเจ็กต์ด้วยการอ้างอิงใหม่ หนึ่ง. ตัวอย่างเช่น หากคุณมี `Vec` ของ `String`s และคุณต้องการแทนที่หนึ่งในสตริงด้วยสตริงใหม่ คุณจะต้อง upbind การอ้างอิงไปยังสตริงเก่าก่อนจึงจะสามารถแทรกสตริงใหม่ลงใน `Vec `.
หากต้องการเชื่อมโยงข้อมูลอ้างอิงกลับขึ้นไป คุณใช้ฟังก์ชัน `std::mem::replace` ฟังก์ชันนี้รับตัวชี้สองตัวเป็นอาร์กิวเมนต์ ตัวชี้ตัวแรกคือค่าปัจจุบันของการอ้างอิง และตัวชี้ตัวที่สองคือค่าใหม่ที่คุณต้องการผูกการอ้างอิงด้วย ฟังก์ชันส่งคืนค่าใหม่ที่ถูกผูกไว้กับการอ้างอิง
ต่อไปนี้เป็นตัวอย่างของวิธีที่คุณอาจเชื่อมโยงการอ้างอิงใน Rust:
```
let mut vec = Vec::new();
vec.push(String::from( "hello"));
// ผูกการอ้างอิงถึงสตริงแรกเพื่อชี้ไปที่สตริงใหม่ new_string = String::from("goodbye");
vec[0] = std::mem::replace(&vec[0 ], &new_string);
```
ในตัวอย่างนี้ เราสร้าง `Vec` ของ `String`s และใส่สตริงลงบนเวกเตอร์ จากนั้นเราเชื่อมโยงการอ้างอิงไปยังสตริงแรกเพื่อชี้ไปที่สตริงใหม่ ฟังก์ชัน `std::mem::replace` จะใช้ที่อยู่ของค่าปัจจุบันของการอ้างอิง (`&vec[0]`) และที่อยู่ของค่าใหม่ (`&new_string`) โดยจะส่งกลับค่าใหม่ที่ถูกผูกไว้กับการอ้างอิง (`new_string`)
Upbinding เป็นแนวคิดที่สำคัญในระบบความเป็นเจ้าของของ Rust เนื่องจากช่วยให้คุณสามารถอัปเดตการอ้างอิงไปยังอ็อบเจ็กต์ได้อย่างปลอดภัยโดยไม่ต้องกังวลเกี่ยวกับการแข่งขันของข้อมูลหรือพฤติกรรมที่ไม่ได้กำหนดรูปแบบอื่น ๆ



