Obiekty cech (trait objects)
Rustowy sposób na dynamiczną dyspozycję: dyn Trait ukrywa konkretny typ, a metodę wyszukuje w czasie działania w tablicy vtable.
Kod generyczny w Ruście zwykle jest monomorfizowany — kompilator tworzy osobną kopię dla każdego konkretnego typu, co daje bezpośrednie wywołania kosztem większych binariów. Czasem to niemożliwe: wektor mający przechowywać różne rodzaje figur nie może mieć jednego konkretnego typu elementu. Wtedy wchodzi Box<dyn Draw>, gdzie każda wartość to para wskaźników — jeden do danych, drugi do tablicy implementacji metod danego typu. Wywołanie staje się pośrednie i nie można go wstawić inline, ale kod istnieje w jednym egzemplarzu. Nie każda cecha się kwalifikuje: reguły bezpieczeństwa obiektowego wykluczają m.in. metody generyczne, bo vtable nie pomieści nieskończenie wielu wariantów.