IT-lexikon › Programmering › Trait-objekt

Trait-objekt Trait objects

Programmering In English → Uppdaterad: 2026-07-29

Rusts sätt att göra dynamisk dispatch: dyn Trait döljer den konkreta typen och slår upp metoden i en vtabell vid körning.

Generisk kod i Rust monomorfiseras normalt — kompilatorn stämplar ut en separat kopia per konkret typ, vilket ger direkta anrop men växande binärer. Ibland går det inte: en vektor som ska innehålla olika sorters figurer kan inte ha en enda konkret elementtyp. Då används Box<dyn Draw>, där varje värde representeras av en dubbel pekare — en till datan, en till tabellen med typens metodimplementationer. Anropet blir indirekt och kan inte inlinas, men koden finns bara i ett exemplar. Alla traits duger inte: regler för objektsäkerhet stänger ute bland annat generiska metoder, eftersom det är omöjligt att fylla en vtabell med oändligt många varianter.

← Tillbaka till lexikonet