Interior Mutability
หัวข้อนี้คือ “กลโกง” ที่ถูกกฎหมายของ Rust ครับ! Interior Mutability อนุญาตให้เราแก้ข้อมูล ข้างใน ได้ แม้ตัวแปรภายนอกจะเป็น Immutable ก็ตาม
ลองนึกภาพกล่องที่ล็อคไว้จากข้างนอก (immutable) แต่ข้างในมีช่องลับที่เปิดออกได้ (mutable) นั่นแหละครับคือ Interior Mutability พอดี
1. Cell - Simple Interior Mutability
Section titled “1. Cell - Simple Interior Mutability”1.1 Basic Usage
Section titled “1.1 Basic Usage”Cell<T> เป็น wrapper ที่ง่ายที่สุดสำหรับ Interior Mutability โดยใช้กับ Copy types เท่านั้น
// ============================================// Cell<T> - Interior Mutability สำหรับ Copy types// ============================================use std::cell::Cell;
fn main() { // ============================================ // ประกาศแบบ immutable (ไม่มี mut) แต่... // ============================================ let x = Cell::new(5);
// ============================================ // เราแก้ค่าข้างในได้ด้วย set()! // ============================================ x.set(10);
// ============================================ // อ่านค่าด้วย get() - จะ copy ค่าออกมา // ============================================ println!("Value: {}", x.get()); // 10
// ============================================ // สามารถ set ได้หลายครั้ง // ============================================ x.set(20); x.set(30); println!("Final: {}", x.get()); // 30}เข้าสู่ระบบเพื่อดูเนื้อหาเต็ม
ยืนยันตัวตนด้วยบัญชี Google เพื่อปลดล็อกบทความทั้งหมด
Login with Google