IT-lexikon › Programmering › Trait object

Trait object

Programmering In English → Uppdaterad: 2026-05-27

Rust feature: dynamic-dispatch via virtual table. Box<dyn Trait> eller &dyn Trait. Runtime polymorphism istället för compile-time monomorphization. Trade-off: bigger flexibility, slight runtime cost.

Vtable lookup: ~5ns per method-call vs inlined static dispatch ~0ns. Mostly negligible — use trait objects när: heterogeneous collections (Vec<Box<dyn Trait>>), plugin-architectures, returning different concrete types via en function. Object-safety rules: trait kan vara object om alla methods är dispatchable (no Self-by-value, no generic-method-args). Modern Rust 1.27+: dyn-keyword obligatoriskt (vs old "&Trait"-syntax). Equivalent: Java interface (alltid virtual), Go interface (samma). Trait objects + monomorphization är complementary patterns; choose based on need.

← Tillbaka till lexikonet