@ -38,8 +38,12 @@ func ParsePrivateID(in string) (out PrivateID, err error) {
return out , err
return out , err
}
}
func ( id PrivateID ) AppendText ( b [ ] byte ) ( [ ] byte , error ) {
return hexAppendEncode ( b , id [ : ] ) , nil
}
func ( id PrivateID ) MarshalText ( ) ( [ ] byte , error ) {
func ( id PrivateID ) MarshalText ( ) ( [ ] byte , error ) {
return formatID ( id ) , nil
return id . AppendText ( nil )
}
}
func ( id * PrivateID ) UnmarshalText ( in [ ] byte ) error {
func ( id * PrivateID ) UnmarshalText ( in [ ] byte ) error {
@ -47,7 +51,7 @@ func (id *PrivateID) UnmarshalText(in []byte) error {
}
}
func ( id PrivateID ) String ( ) string {
func ( id PrivateID ) String ( ) string {
return string ( formatID( id ) )
return string ( hexAppendEncode( nil , id [ : ] ) )
}
}
func ( id PrivateID ) IsZero ( ) bool {
func ( id PrivateID ) IsZero ( ) bool {
@ -70,8 +74,12 @@ func ParsePublicID(in string) (out PublicID, err error) {
return out , err
return out , err
}
}
func ( id PublicID ) AppendText ( b [ ] byte ) ( [ ] byte , error ) {
return hexAppendEncode ( b , id [ : ] ) , nil
}
func ( id PublicID ) MarshalText ( ) ( [ ] byte , error ) {
func ( id PublicID ) MarshalText ( ) ( [ ] byte , error ) {
return formatID ( id ) , nil
return id . AppendText ( nil )
}
}
func ( id * PublicID ) UnmarshalText ( in [ ] byte ) error {
func ( id * PublicID ) UnmarshalText ( in [ ] byte ) error {
@ -79,7 +87,7 @@ func (id *PublicID) UnmarshalText(in []byte) error {
}
}
func ( id PublicID ) String ( ) string {
func ( id PublicID ) String ( ) string {
return string ( formatID( id ) )
return string ( hexAppendEncode( nil , id [ : ] ) )
}
}
func ( id1 PublicID ) Less ( id2 PublicID ) bool {
func ( id1 PublicID ) Less ( id2 PublicID ) bool {
@ -98,10 +106,12 @@ func (id PublicID) Prefix64() uint64 {
return binary . BigEndian . Uint64 ( id [ : 8 ] )
return binary . BigEndian . Uint64 ( id [ : 8 ] )
}
}
func formatID ( in [ 32 ] byte ) [ ] byte {
// TODO(https://go.dev/issue/53693): Use hex.AppendEncode instead.
var hexArr [ 2 * len ( in ) ] byte
func hexAppendEncode ( dst , src [ ] byte ) [ ] byte {
hex . Encode ( hexArr [ : ] , in [ : ] )
n := hex . EncodedLen ( len ( src ) )
return hexArr [ : ]
dst = slices . Grow ( dst , n )
hex . Encode ( dst [ len ( dst ) : ] [ : n ] , src )
return dst [ : len ( dst ) + n ]
}
}
func parseID [ Bytes [ ] byte | string ] ( funcName string , out * [ 32 ] byte , in Bytes ) ( err error ) {
func parseID [ Bytes [ ] byte | string ] ( funcName string , out * [ 32 ] byte , in Bytes ) ( err error ) {