Documentation ¶
Index ¶
Constants ¶
const IDLength = 16
IDLength is the exact length a string (or a byte slice representing it) must have in order to be decoded into a valid ID.
Variables ¶
var ( // ErrInvalidID signifies invalid IDs. ErrInvalidID = &errors.Error{ Code: errors.EInvalid, Msg: "invalid ID", } // ErrInvalidIDLength is returned when an ID has the incorrect number of bytes. ErrInvalidIDLength = &errors.Error{ Code: errors.EInvalid, Msg: "id must have a length of 16 bytes", } )
Functions ¶
func ErrCorruptID ¶
ErrCorruptID means the ID stored in the Store is corrupt.
Types ¶
type ID ¶
type ID uint64
ID is a unique identifier.
Its zero value is not a valid ID.
func IDFromString ¶
IDFromString creates an ID from a given string.
It errors if the input string does not match a valid ID.
func (*ID) Decode ¶
Decode parses b as a hex-encoded byte-slice-string.
It errors if the input byte slice does not have the correct length or if it contains all zeros.
func (*ID) DecodeFromString ¶
DecodeFromString parses s as a hex-encoded string.
func (ID) Encode ¶
Encode converts ID to a hex-encoded byte-slice-string.
It errors if the receiving ID holds its zero value.
func (ID) GoString ¶
GoString formats the ID the same as the String method. Without this, when using the %#v verb, an ID would be printed as a uint64, so you would see e.g. 0x2def021097c6000 instead of 02def021097c6000 (note the leading 0x, which means the former doesn't show up in searches for the latter).
func (ID) MarshalText ¶
MarshalText encodes i as text. Providing this method is a fallback for json.Marshal, with the added benefit that IDs encoded as map keys will be the expected string encoding, rather than the effective fmt.Sprintf("%d", i) that json.Marshal uses by default for integer types.
func (ID) String ¶
String returns the ID as a hex encoded string.
Returns an empty string in the case the ID is invalid.
func (*ID) UnmarshalText ¶
UnmarshalText decodes i from a byte slice. Providing this method is also a fallback for json.Unmarshal, also relevant when IDs are used as map keys.
type IDGenerator ¶
type IDGenerator interface { // ID creates unique byte slice ID. ID() ID }
IDGenerator represents a generator for IDs.