# Functions

NewPointerCodec returns a PointerCodec that has been initialized.
NewRegistryBuilder creates a new empty RegistryBuilder.
NewStructCodec returns a StructCodec that uses p for struct tag parsing.

# Variables

DefaultStructTagParser is the StructTagParser used by the StructCodec by default.
ErrNilType is returned when nil is passed to either LookupEncoder or LookupDecoder.
ErrNotInterface is returned when the provided type is not an interface.
ErrNotPointer is returned when a non-pointer type is provided to LookupDecoder.

# Structs

DecodeContext is the contextual information required for a Codec to decode a value.
DefaultValueDecoders is a namespace type for the default ValueDecoders used when creating a registry.
DefaultValueEncoders is a namespace type for the default ValueEncoders used when creating a registry.
EncodeContext is the contextual information required for a Codec to encode a value.
ErrNoDecoder is returned when there wasn't a decoder available for a type.
ErrNoEncoder is returned when there wasn't an encoder available for a type.
ErrNoTypeMapEntry is returned when there wasn't a type available for the provided BSON type.
PointerCodec is the Codec used for pointers.
A Registry is used to store and retrieve codecs for types and interfaces.
A RegistryBuilder is used to build a Registry.
StructCodec is the Codec used for struct values.
StructTags represents the struct tag fields that the StructCodec uses during the encoding and decoding process.
TransitionError is an error returned when an invalid progressing a ValueReader or ValueWriter state machine occurs.
ValueDecoderError is an error returned from a ValueDecoder when the provided value can't be decoded by the ValueDecoder.
ValueEncoderError is an error returned from a ValueEncoder when the provided value can't be encoded by the ValueEncoder.

# Interfaces

CodecZeroer is the interface implemented by Codecs that can also determine if a value of the type that would be encoded is zero.
Marshaler is an interface implemented by types that can marshal themselves into a BSON document represented as bytes.
Proxy is an interface implemented by types that cannot themselves be directly encoded.
StructTagParser returns the struct tags for a given struct field.
Unmarshaler is an interface implemented by types that can unmarshal a BSON document representation of themselves.
ValueCodec is the interface that groups the methods to encode and decode values.
ValueDecoder is the interface implemented by types that can handle the decoding of a value.
ValueEncoder is the interface implemented by types that can handle the encoding of a value.
ValueMarshaler is an interface implemented by types that can marshal themselves into a BSON value as bytes.
ValueUnmarshaler is an interface implemented by types that can unmarshal a BSON value representaiton of themselves.
Zeroer allows custom struct types to implement a report of zero state.

# Type aliases

StructTagParserFunc is an adapter that allows a generic function to be used as a StructTagParser.
ValueDecoderFunc is an adapter function that allows a function with the correct signature to be used as a ValueDecoder.
ValueEncoderFunc is an adapter function that allows a function with the correct signature to be used as a ValueEncoder.