Generic types allow us to partially define a struct or enum, enabling a compiler to create a fully
defined version at compile-time based off our code usage.
Rust generally can infer the final type by looking at our instantiation, but if it needs help you
can always be explicit using the ::<T> operator, also known by the name turbofish (he's a good friend of mine!).