HashMap<Key, Value> with Key being:Key - which breaks the HashMap.Key as: Data.struct function does not comply with the type. I feel like that is the whole purpose of Data to have those traits so it feels strange having this confusion in the resulting type, shouldn't the Data methods return T & Hash & Equal? What is the recommended way to deal with those types?