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 Into<u64>
.
So Pointee<Metadata = ()>
is constraining the type Metadata
inside Pointee
's declaration
Do you have any recommendations for information about type parameters and associated types?
The rust book has a section on associated types
https://doc.rust-lang.org/stable/book/ch19-03-advanced-traits.html
Type parameters in traits work mostly the same way they do on structs and enums
This topic was automatically closed 90 days after the last reply. We invite you to open a new topic if you have further questions or comments.