For a detailed description of the problem, please check this link
It's just a normal associated type bound, just like
fn take_iter<T>(iter: T) where T: Iterator<Item = u64>,
which constrains the associated type to be the given type. In the case of
Thin it's constraining
Pointee::Metadata to be the unit type
I'm not really clear on what you're asking when you say "how it's passed"
I still don't understand how
Metadata = () is passed to the
Pointee trait, which does not contain the generic
Ahh, maybe you're confusing type parameters with associated types. When you pass a type parameter you don't use the
Name = syntax, that's exclusively for associated types.
For example the
Into trait has a type parameters specified by
Pointee<Metadata = ()> is constraining the
type Metadata inside
Do you have any recommendations for information about type parameters and associated types?
The rust book has a section on associated types
Type parameters in traits work mostly the same way they do on structs and enums