
Trait ขั้นสูง
Associated type เทียบกับ generic, GATs, trait object, คีย์เวิร์ด dyn, object safety, vtable
1ความแตกต่างหลักระหว่าง associated type กับพารามิเตอร์ generic ใน trait คืออะไร?
ความแตกต่างหลักระหว่าง associated type กับพารามิเตอร์ generic ใน trait คืออะไร?
คำตอบ
associated type อนุญาตให้มีการ implement trait ได้เพียงหนึ่งครั้งต่อหนึ่งชนิด ในขณะที่พารามิเตอร์ generic อนุญาตให้มีการ implement ได้หลายครั้ง เมื่อใช้ associated type ชนิดจะถูกกำหนดโดยตัว implementation เอง ซึ่งช่วยให้การ inference ชนิดง่ายขึ้นและไม่ต้องระบุชนิดในทุกครั้งที่ใช้งาน
2ใช้คีย์เวิร์ดใดในการสร้าง trait object ใน Rust?
ใช้คีย์เวิร์ดใดในการสร้าง trait object ใน Rust?
คำตอบ
คีย์เวิร์ด dyn ใช้สำหรับสร้าง trait object ใน Rust โดยบ่งบอกว่าการ dispatch เมธอดจะเกิดขึ้นแบบไดนามิกขณะรันไทม์ผ่าน vtable ซึ่งต่างจาก static dispatch ของ generic ที่ถูกแก้ไขตั้งแต่ตอนคอมไพล์
3vtable คืออะไรในบริบทของ trait object?
vtable คืออะไรในบริบทของ trait object?
คำตอบ
vtable (virtual table) คือตารางของพอยน์เตอร์ที่ชี้ไปยัง implementation ของเมธอดใน trait สำหรับชนิดข้อมูลที่เป็นรูปธรรม ใช้สำหรับ dynamic dispatch ของ trait object ทำให้สามารถเรียกเมธอดที่ถูกต้องได้ขณะรันไทม์โดยไม่ต้องรู้ชนิดที่เป็นรูปธรรมตอนคอมไพล์
trait ต้องเป็นไปตามเงื่อนไขใดจึงจะเป็น object-safe?
ทำไม trait Clone จึงไม่เป็น object-safe?
+19 คำถามสัมภาษณ์
หัวข้อสัมภาษณ์ Rust อื่นๆ
พื้นฐาน Rust
Ownership & Borrowing
Structs & Enums
การจัดการข้อผิดพลาด
คอลเลกชัน
โมดูลและแพ็กเกจ
Traits
Generics
Lifetimes
Iterators & Closures
Smart Pointers
Concurrency Basics
async/await
Testing
Cargo & Ecosystem
Pattern Matching
มาโคร
Serde และการ Serialization
Unsafe Rust
Lifetime ขั้นสูง
Type System
Tokio & Async I/O
การเพิ่มประสิทธิภาพ
Memory Management
Web Frameworks
Database Integration
Design Pattern ของ Rust
เชี่ยวชาญ Rust สำหรับการสัมภาษณ์ครั้งถัดไป
เข้าถึงคำถามทั้งหมด flashcards แบบทดสอบเทคนิค แบบฝึกหัด code review และตัวจำลองสัมภาษณ์
เริ่มใช้ฟรี