Rust

Lifetimes

Lifetime annotation, กฎ elision, lifetime 'static, lifetime ของ struct, lifetime bounds

20 คำถามสัมภาษณ์·
Mid-Level
1

จุดประสงค์หลักของ lifetime ใน Rust คืออะไร?

คำตอบ

Lifetime ช่วยให้ compiler ตรวจสอบว่า reference ทั้งหมดใช้งานได้ตลอดช่วงการใช้งาน โดยรับประกันว่า reference จะไม่มีอายุยืนกว่าข้อมูลที่มันอ้างถึง จึงป้องกัน dangling reference ได้ borrow checker ใช้ lifetime เพื่อตรวจสอบความปลอดภัยของหน่วยความจำในขณะคอมไพล์ โดยไม่มี overhead ขณะรันไทม์

2

ใช้ไวยากรณ์ใดในการระบุ lifetime บน reference?

คำตอบ

Lifetime ถูกระบุด้วยเครื่องหมายอะพอสทรอฟีตามด้วยชื่อ โดยทั่วไปเป็นตัวอักษรพิมพ์เล็กเช่น 'a ไวยากรณ์ &'a T หมายถึง reference ไปยัง T ที่มี lifetime 'a ตามธรรมเนียมจะใช้ 'a, 'b, 'c สำหรับ lifetime แบบ generic แต่สามารถใช้ตัวระบุที่ถูกต้องใด ๆ หลังเครื่องหมายอะพอสทรอฟีได้

3

Lifetime 'static หมายความว่าอย่างไรใน Rust?

คำตอบ

Lifetime 'static แสดงว่า reference สามารถมีอายุได้ตลอดช่วงเวลาทั้งหมดของโปรแกรม string literal เช่น "hello" จะมี lifetime 'static โดยอัตโนมัติเพราะถูกฝังอยู่ใน binary ค่าคงที่ระดับ global และค่าที่สร้างด้วย Box::leak ก็มี lifetime นี้เช่นกัน หมายเหตุ: 'static ไม่ได้หมายความว่าค่ามีอยู่ตั้งแต่เริ่มโปรแกรม แต่หมายความว่ามันสามารถมีอายุอยู่จนจบได้

4

Compiler ของ Rust ใช้กฎ lifetime elision โดยอัตโนมัติกี่ข้อ?

5

ทำไมฟังก์ชัน fn longest(x: &str, y: &str) -> &str จึงคอมไพล์ไม่ได้?

+17 คำถามสัมภาษณ์

เชี่ยวชาญ Rust สำหรับการสัมภาษณ์ครั้งถัดไป

เข้าถึงคำถามทั้งหมด flashcards แบบทดสอบเทคนิค แบบฝึกหัด code review และตัวจำลองสัมภาษณ์

เริ่มใช้ฟรี