Composing a Rustic tune
Last time, we looked at generics and traits at a high level. This time, we
dig deeper on traits, looking specifically at
std::iter::Iterator as an
example of a powerful trait that can be composed across types, and then at
how we might compose multiple traits on a single type.
We also talk about the syntax for traits, the use of marker traits, some of the things you can't presently do with traits, and even just a smidge about the future of traits in Rust. All that in less than 20 minutes!
You'll find today's source example fairly interesting, I think: it's just one type, but it uses almost every concept discussed on the show today!
- Nick Cameron: "Thoughts on Rust in 2016"
- "Upcoming breakage starting in Rust 1.7, from RFCs 1214 and 136"
- The Rust Book:
- The Rust reference:
- RFC: impl specialization
- Aaron Turon: "Specialize to reuse"
- Aleksey Pirogov
- Chris Palmer
- Derek Morr
- Hamza Sheikh
- Luca Schmid
- Micael Bergeron
- Ralph Giles ("rillian")
- William Roe
Define a simple struct on which to implement
Define a simple trait so we can see how it works.
Demonstrate using a for loop over an (infinite!) iterator.