From: Matt Joiner Date: Thu, 21 Jan 2021 22:49:51 +0000 (+1100) Subject: Implement encoding.TextMarshaler to match unmarshaler for metainfo.Hash X-Git-Tag: v1.22.0~30 X-Git-Url: http://www.git.stargrave.org/?a=commitdiff_plain;h=03b1abafb9749a5a2f72b9facbba0d97081d985a;p=btrtrc.git Implement encoding.TextMarshaler to match unmarshaler for metainfo.Hash Fixes https://github.com/anacrolix/torrent/issues/463 --- 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)