It's so easy to make mistakes by specifying %x when printing these.
// 20-byte SHA1 hash used for info and pieces.
type Hash [HashSize]byte
+var _ fmt.Formatter = (*Hash)(nil)
+
+func (h Hash) Format(f fmt.State, c rune) {
+ // TODO: I can't figure out a nice way to just override the 'x' rune, since it's meaningless
+ // with the "default" 'v', or .String() already returning the hex.
+ f.Write([]byte(h.HexString()))
+}
+
func (h Hash) Bytes() []byte {
return h[:]
}