aboutsummaryrefslogtreecommitdiff
path: root/src/encoding/encoding.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/encoding/encoding.go')
-rw-r--r--src/encoding/encoding.go24
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)
+}