A note on structs
Instead of sharing protocol implementation with maps, structs require their own protocol implementation.