If you want to implement a custom hash, do all types have to implement these two traits?