]> Sergey Matveev's repositories - btrtrc.git/blob - bencode/bytes.go
Drop support for go 1.20
[btrtrc.git] / bencode / bytes.go
1 package bencode
2
3 import (
4         "errors"
5         "fmt"
6 )
7
8 type Bytes []byte
9
10 var (
11         _ Unmarshaler = (*Bytes)(nil)
12         _ Marshaler   = (*Bytes)(nil)
13         _ Marshaler   = Bytes{}
14 )
15
16 func (me *Bytes) UnmarshalBencode(b []byte) error {
17         *me = append([]byte(nil), b...)
18         return nil
19 }
20
21 func (me Bytes) MarshalBencode() ([]byte, error) {
22         if len(me) == 0 {
23                 return nil, errors.New("marshalled Bytes should not be zero-length")
24         }
25         return me, nil
26 }
27
28 func (me Bytes) GoString() string {
29         return fmt.Sprintf("bencode.Bytes(%q)", []byte(me))
30 }