Types are types. Let's take a type system with generics but no single inheritance.
Traits are properties that types can have, like Java interfaces though more powerful.
Many traits can be used as types to form a vtable dispatch. For example, Box<Send> uses the trait `Send` here as a type. Objects of type `Send` are "unsized" and must be held behind a pointer (which becomes a fat pointer).
I've been wondering about the same thing recently too. Meanwhile, there is an article that explains how Haskell typeclasses[1] are implemented, or how they conceptually work: