Notes 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!

Links * Nick Cameron: “Thoughts on Rust in 2016” * “Upcoming breakage starting in Rust 1.7, from RFCs 1214 and 136” + RFC 1214: Clarify (and improve) rules for projections and well-formedness + RFC 136: Ban private items in public APIs * The Rust Book: + Traits + Trait objects (dynamic dispatch) * The Rust reference: + std::iter and std::iter::Iterator + Add + Drop + PartialEq and Eq + PartialOrd and Ord + Special traits + Trait objects * RFC: impl specialization + Aaron Turon: “Specialize to reuse”

Sponsors * Aleksey Pirogov * Chris Palmer * Derek Morr * Hamza Sheikh * Luca Schmid * Micael Bergeron * Ralph Giles (“rillian”) * reddraggone9 * William Roe

Become a sponsor * Patreon * Venmo * Dwolla * Cash.me

Follow * New Rustacean: + Twitter: @newrustacean + App.net: @newrustacean + Email: hello@newrustacean.com * Chris Krycho + Twitter: @chriskrycho + App.net: @chriskrycho