Rust

Trait ขั้นสูง

Associated type เทียบกับ generic, GATs, trait object, คีย์เวิร์ด dyn, object safety, vtable

22 คำถามสัมภาษณ์·
Senior
1

ความแตกต่างหลักระหว่าง associated type กับพารามิเตอร์ generic ใน trait คืออะไร?

คำตอบ

associated type อนุญาตให้มีการ implement trait ได้เพียงหนึ่งครั้งต่อหนึ่งชนิด ในขณะที่พารามิเตอร์ generic อนุญาตให้มีการ implement ได้หลายครั้ง เมื่อใช้ associated type ชนิดจะถูกกำหนดโดยตัว implementation เอง ซึ่งช่วยให้การ inference ชนิดง่ายขึ้นและไม่ต้องระบุชนิดในทุกครั้งที่ใช้งาน

2

ใช้คีย์เวิร์ดใดในการสร้าง trait object ใน Rust?

คำตอบ

คีย์เวิร์ด dyn ใช้สำหรับสร้าง trait object ใน Rust โดยบ่งบอกว่าการ dispatch เมธอดจะเกิดขึ้นแบบไดนามิกขณะรันไทม์ผ่าน vtable ซึ่งต่างจาก static dispatch ของ generic ที่ถูกแก้ไขตั้งแต่ตอนคอมไพล์

3

vtable คืออะไรในบริบทของ trait object?

คำตอบ

vtable (virtual table) คือตารางของพอยน์เตอร์ที่ชี้ไปยัง implementation ของเมธอดใน trait สำหรับชนิดข้อมูลที่เป็นรูปธรรม ใช้สำหรับ dynamic dispatch ของ trait object ทำให้สามารถเรียกเมธอดที่ถูกต้องได้ขณะรันไทม์โดยไม่ต้องรู้ชนิดที่เป็นรูปธรรมตอนคอมไพล์

4

trait ต้องเป็นไปตามเงื่อนไขใดจึงจะเป็น object-safe?

5

ทำไม trait Clone จึงไม่เป็น object-safe?

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

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

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

เริ่มใช้ฟรี