Cell - Interior Mutability
std::cell มี types สำหรับแก้ไขข้อมูลผ่าน shared reference! เป็น pattern ที่สำคัญเมื่อต้องการ mutability ในบางจุด
Cell คืออะไร?
Section titled “Cell คืออะไร?”ปกติ Rust ไม่ให้แก้ไขผ่าน &T (shared reference) แต่ Cell types ทำได้:
| Type | ใช้เมื่อ | Thread-safe |
|---|---|---|
Cell<T> | T เป็น Copy | No |
RefCell<T> | ต้อง borrow runtime | No |
OnceCell<T> | Set ครั้งเดียว | No |
Mutex<T> / RwLock<T> | ข้าม threads | Yes |
use std::cell::Cell;
fn main() { // ============================================ // ทำไมต้อง Interior Mutability? // ============================================
// ปกติ: &T ไม่ให้แก้ไข let x = 5; let r = &x; // *r = 10; // Error! can't mutate through &T
// Cell: แก้ไขผ่าน shared reference ได้ let cell = Cell::new(5); let r1 = &cell; let r2 = &cell;
r1.set(10); // OK! แก้ไขได้ r2.set(20); // OK! แก้ไขได้
println!("cell: {}", cell.get());}เข้าสู่ระบบเพื่อดูเนื้อหาเต็ม
ยืนยันตัวตนด้วยบัญชี Google เพื่อปลดล็อกบทความทั้งหมด
Login with Google