Skip to content
เข้าสู่ระบบ

Lifetimes

ยินดีต้อนรับสู่ “ด่านปราบเซียน” ของ Rust ครับ! หลักการมันง่ายมาก: “ของต้องมีอยู่จริง ตราบเท่าที่เรายังใช้มันอยู่”

ลองนึกภาพว่าเราไปร้านหนังสือแล้วยืมหนังสือมาอ่าน เราต้องคืนก่อนที่ร้านจะปิด ถ้าร้านปิดไปแล้วแต่เรายังถือหนังสืออยู่ นั่นก็คือปัญหา! Lifetimes ใน Rust ก็คล้ายๆ กัน - Reference ต้องไม่ outlive ข้อมูลที่มันอ้างถึง

ใน Rust ทุก Reference (&T) จะมี Lifetime (ช่วงเวลาที่มันมีชีวิตอยู่) เสมอ ส่วนใหญ่ Compiler รู้เอง แต่บางทีมันงงว่า “ตกลงอันนี้จะอยู่นานแค่ไหน?“

1.1 Dangling Reference - ปัญหาหลัก

Section titled “1.1 Dangling Reference - ปัญหาหลัก”
fn main() {
let r;
{
let x = 5;
// ============================================
// ถ้าเราทำแบบนี้ (uncomment ดู)
// r = &x;
// จะ Error! เพราะ x จะตายก่อน r
// ============================================
}
// ถ้า r ชี้ไปหา x ที่ตายแล้ว = Dangling Reference!
// println!("{}", r); // UB in other languages, Error in Rust
// ============================================
// Fixed version - x อยู่ยาวพอ
// ============================================
let x = 5;
let r = &x;
println!("{}", r); // OK! x ยังมีชีวิต
}

เข้าสู่ระบบเพื่อดูเนื้อหาเต็ม

ยืนยันตัวตนด้วยบัญชี Google เพื่อปลดล็อกบทความทั้งหมด