Crate scale_type_resolver
source ·Expand description
scale-type-resolver
provides a generic TypeResolver
trait which can be implemented for
any type that is capable of being given a type ID and resolving that into information about
how the type is SCALE encoded. This allows libraries like scale-decode
to be able to decode
SCALE encoded bytes using either a modern type resolver like scale_info::PortableRegistry
,
or using entirely custom type resolvers (which we would need in order decode blocks from pre-V14
metadata).
It’s unlikely that you’d depend on this library directly; more likely you’d depend on a library
like scale-decode
which uses and re-exports the TypeResolver
trait itself.
This crate is no_std
by default and doesn’t require alloc
except for tests.
Modules§
- An implementation and associated things related to
scale_info::PortableRegistry
. - A concrete
ResolvedTypeVisitor
implementation that allows you to provide closures to configure it. Using this is often a lot easier than implementingResolvedTypeVisitor
yourself, but does require an additional dependency and may be a touch less performant.
Structs§
- Information about a composite field.
- Information about a specific variant type.
Enums§
- This is a runtime representation of the order that bits will be written to the specified
BitsStoreFormat
. - This is a runtime representation of the store type that we’re targeting. These are equivalent to the
bitvec
store typesu8
,u16
and so on. - This is handed to
ResolvedTypeVisitor::visit_primitive()
, and denotes the exact shape of the primitive type that we have resolved. - If any of the
ResolvedTypeVisitor
methods are not implemented, thenResolvedTypeVisitor::visit_unhandled()
is called, and given an instance of this enum to denote which method was unhandled.
Traits§
- An iterator over a set of fields.
- A glorified set of callbacks, exactly one of which will fire depending on the outcome of calling
TypeResolver::resolve_type()
. These don’t typically need to be implemented by the user, and instead are implemented internally in egscale-decode
to drive the decoding of types. - A trait representing a type ID.
- This trait can be implemented for any type that is capable of describing how some type (identified by a
TypeResolver::TypeId
) is represented in terms of SCALE encoded bytes. - An iterator over a set of variants.