diff --git a/metainfo/hash.go b/metainfo/hash.go index b2bab751..0e258f3d 100644 --- a/metainfo/hash.go +++ b/metainfo/hash.go @@ -12,10 +12,7 @@ const HashSize = 20 // 20-byte SHA1 hash used for info and pieces. type Hash [HashSize]byte -var ( - _ fmt.Formatter = (*Hash)(nil) - _ encoding.TextUnmarshaler = (*Hash)(nil) -) +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 @@ -54,9 +51,17 @@ func (h *Hash) FromHexString(s string) (err error) { return } +var ( + _ encoding.TextUnmarshaler = (*Hash)(nil) + _ encoding.TextMarshaler = Hash{} +) + func (h *Hash) UnmarshalText(b []byte) error { return h.FromHexString(string(b)) } +func (h Hash) MarshalText() (text []byte, err error) { + return []byte(h.HexString()), nil +} func NewHashFromHex(s string) (h Hash) { err := h.FromHexString(s)