
Advanced Traits
Associated types vs generics, GATs, trait objects, dyn keyword, object safety, vtables
1What is the main difference between an associated type and a generic parameter in a trait?
What is the main difference between an associated type and a generic parameter in a trait?
回答
An associated type allows only one trait implementation per type, while a generic parameter allows multiple implementations. With an associated type, the type is determined by the implementation itself, which simplifies type inference and avoids specifying the type at each use.
2Which keyword is used to create a trait object in Rust?
Which keyword is used to create a trait object in Rust?
回答
The dyn keyword is used to create a trait object in Rust. It indicates that method dispatch will happen dynamically at runtime via a vtable, as opposed to static dispatch with generics which is resolved at compile time.
3What is a vtable in the context of trait objects?
What is a vtable in the context of trait objects?
回答
A vtable (virtual table) is a table of pointers to the trait method implementations for a concrete type. It is used for dynamic dispatch of trait objects, allowing the correct method to be called at runtime without knowing the concrete type at compile time.
What condition must a trait meet to be object-safe?
Why is the Clone trait not object-safe?
+19 面接問題