diff options
Diffstat (limited to 'src/encoding')
| -rw-r--r-- | src/encoding/encoding.go | 24 |
1 files changed, 24 insertions, 0 deletions
diff --git a/src/encoding/encoding.go b/src/encoding/encoding.go index 50acf3c23a..4d288b6d3b 100644 --- a/src/encoding/encoding.go +++ b/src/encoding/encoding.go @@ -35,6 +35,18 @@ type BinaryUnmarshaler interface { UnmarshalBinary(data []byte) error } +// BinaryAppender is the interface implemented by an object +// that can append the binary representation of itself. +// If a type implements both [BinaryAppender] and [BinaryMarshaler], +// then v.MarshalBinary() must be semantically identical to v.AppendBinary(nil). +type BinaryAppender interface { + // AppendBinary appends the binary representation of itself to the end of b + // (allocating a larger slice if necessary) and returns the updated slice. + // + // Implementations must not retain b, nor mutate any bytes within b[:len(b)]. + AppendBinary(b []byte) ([]byte, error) +} + // TextMarshaler is the interface implemented by an object that can // marshal itself into a textual form. // @@ -52,3 +64,15 @@ type TextMarshaler interface { type TextUnmarshaler interface { UnmarshalText(text []byte) error } + +// TextAppender is the interface implemented by an object +// that can append the textual representation of itself. +// If a type implements both [TextAppender] and [TextMarshaler], +// then v.MarshalText() must be semantically identical to v.AppendText(nil). +type TextAppender interface { + // AppendText appends the textual representation of itself to the end of b + // (allocating a larger slice if necessary) and returns the updated slice. + // + // Implementations must not retain b, nor mutate any bytes within b[:len(b)]. + AppendText(b []byte) ([]byte, error) +} |
