1.16.1. Two Ways to Make a Trait Generic

Traits can be generic in two ways:

Generic type parameters. Example: trait Foo<T>

Associated types. Example: trait Foo { type Bar; }

The difference between the two is: