Using generics with protocols

In the previous recipes, we investigated how we can use generics within types and functions. Now we will round off our journey through generics in Swift by looking at how Swift can be used in protocols to produce abstract interfaces, while maintaining strongly typed requirements that allow for a more descriptive model.