Previous Episode: e008: Just like something else
Next Episode: e010: Macros rule!

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: [email protected]

Chris Krycho

Twitter: @chriskrycho
App.net: @chriskrycho

Twitter Mentions