Trait-objekt Trait objects
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.