Intro
This post corresponds to Chapter 11. Traits and Generics.
Traits are like interfaces or abstract base classes – contracts that describe what a type can do by describing it's methods. Optionally, they can also define default implementations of the methods they prescribe.
An example trait:
trait Write {
fn write(&mut …