pub struct TraceDecodingVisitor<Resolver> { /* private fields */ }
Expand description
A visitor that will attempt to decode some bytes into a crate::Value
,
returning a detailed error of where the decoding fails if it does.
Implementations§
Source§impl<Resolver> TraceDecodingVisitor<Resolver>
impl<Resolver> TraceDecodingVisitor<Resolver>
Sourcepub fn new() -> Self
pub fn new() -> Self
Construct a new TraceDecodingVisitor
.
Trait Implementations§
Source§impl<Resolver> Default for TraceDecodingVisitor<Resolver>
impl<Resolver> Default for TraceDecodingVisitor<Resolver>
Source§impl<Resolver> Visitor for TraceDecodingVisitor<Resolver>where
Resolver: TypeResolver,
impl<Resolver> Visitor for TraceDecodingVisitor<Resolver>where
Resolver: TypeResolver,
Source§type Value<'scale, 'resolver> = Value<<<TraceDecodingVisitor<Resolver> as Visitor>::TypeResolver as TypeResolver>::TypeId>
type Value<'scale, 'resolver> = Value<<<TraceDecodingVisitor<Resolver> as Visitor>::TypeResolver as TypeResolver>::TypeId>
The type of the value to hand back from the
decode_with_visitor()
function.Source§type Error = TraceDecodingError<Value<<<TraceDecodingVisitor<Resolver> as Visitor>::TypeResolver as TypeResolver>::TypeId>>
type Error = TraceDecodingError<Value<<<TraceDecodingVisitor<Resolver> as Visitor>::TypeResolver as TypeResolver>::TypeId>>
The error type (which we must be able to convert a combination of
Self
and DecodeError
s
into, to handle any internal errors that crop up trying to decode things).Source§type TypeResolver = Resolver
type TypeResolver = Resolver
The thing we’ll use to resolve type IDs into concrete types.
Source§fn visit_bool<'scale, 'resolver>(
self,
value: bool,
type_id: TypeIdFor<Self>,
) -> Result<Self::Value<'scale, 'resolver>, Self::Error>
fn visit_bool<'scale, 'resolver>( self, value: bool, type_id: TypeIdFor<Self>, ) -> Result<Self::Value<'scale, 'resolver>, Self::Error>
Called when a bool is seen in the input bytes.
Source§fn visit_char<'scale, 'resolver>(
self,
value: char,
type_id: TypeIdFor<Self>,
) -> Result<Self::Value<'scale, 'resolver>, Self::Error>
fn visit_char<'scale, 'resolver>( self, value: char, type_id: TypeIdFor<Self>, ) -> Result<Self::Value<'scale, 'resolver>, Self::Error>
Called when a char is seen in the input bytes.
Source§fn visit_u8<'scale, 'resolver>(
self,
value: u8,
type_id: TypeIdFor<Self>,
) -> Result<Self::Value<'scale, 'resolver>, Self::Error>
fn visit_u8<'scale, 'resolver>( self, value: u8, type_id: TypeIdFor<Self>, ) -> Result<Self::Value<'scale, 'resolver>, Self::Error>
Called when a u8 is seen in the input bytes.
Source§fn visit_u16<'scale, 'resolver>(
self,
value: u16,
type_id: TypeIdFor<Self>,
) -> Result<Self::Value<'scale, 'resolver>, Self::Error>
fn visit_u16<'scale, 'resolver>( self, value: u16, type_id: TypeIdFor<Self>, ) -> Result<Self::Value<'scale, 'resolver>, Self::Error>
Called when a u16 is seen in the input bytes.
Source§fn visit_u32<'scale, 'resolver>(
self,
value: u32,
type_id: TypeIdFor<Self>,
) -> Result<Self::Value<'scale, 'resolver>, Self::Error>
fn visit_u32<'scale, 'resolver>( self, value: u32, type_id: TypeIdFor<Self>, ) -> Result<Self::Value<'scale, 'resolver>, Self::Error>
Called when a u32 is seen in the input bytes.
Source§fn visit_u64<'scale, 'resolver>(
self,
value: u64,
type_id: TypeIdFor<Self>,
) -> Result<Self::Value<'scale, 'resolver>, Self::Error>
fn visit_u64<'scale, 'resolver>( self, value: u64, type_id: TypeIdFor<Self>, ) -> Result<Self::Value<'scale, 'resolver>, Self::Error>
Called when a u64 is seen in the input bytes.
Source§fn visit_u128<'scale, 'resolver>(
self,
value: u128,
type_id: TypeIdFor<Self>,
) -> Result<Self::Value<'scale, 'resolver>, Self::Error>
fn visit_u128<'scale, 'resolver>( self, value: u128, type_id: TypeIdFor<Self>, ) -> Result<Self::Value<'scale, 'resolver>, Self::Error>
Called when a u128 is seen in the input bytes.
Source§fn visit_u256<'info>(
self,
value: &[u8; 32],
type_id: TypeIdFor<Self>,
) -> Result<Self::Value<'_, 'info>, Self::Error>
fn visit_u256<'info>( self, value: &[u8; 32], type_id: TypeIdFor<Self>, ) -> Result<Self::Value<'_, 'info>, Self::Error>
Called when a u256 is seen in the input bytes.
Source§fn visit_i8<'scale, 'resolver>(
self,
value: i8,
type_id: TypeIdFor<Self>,
) -> Result<Self::Value<'scale, 'resolver>, Self::Error>
fn visit_i8<'scale, 'resolver>( self, value: i8, type_id: TypeIdFor<Self>, ) -> Result<Self::Value<'scale, 'resolver>, Self::Error>
Called when an i8 is seen in the input bytes.
Source§fn visit_i16<'scale, 'resolver>(
self,
value: i16,
type_id: TypeIdFor<Self>,
) -> Result<Self::Value<'scale, 'resolver>, Self::Error>
fn visit_i16<'scale, 'resolver>( self, value: i16, type_id: TypeIdFor<Self>, ) -> Result<Self::Value<'scale, 'resolver>, Self::Error>
Called when an i16 is seen in the input bytes.
Source§fn visit_i32<'scale, 'resolver>(
self,
value: i32,
type_id: TypeIdFor<Self>,
) -> Result<Self::Value<'scale, 'resolver>, Self::Error>
fn visit_i32<'scale, 'resolver>( self, value: i32, type_id: TypeIdFor<Self>, ) -> Result<Self::Value<'scale, 'resolver>, Self::Error>
Called when an i32 is seen in the input bytes.
Source§fn visit_i64<'scale, 'resolver>(
self,
value: i64,
type_id: TypeIdFor<Self>,
) -> Result<Self::Value<'scale, 'resolver>, Self::Error>
fn visit_i64<'scale, 'resolver>( self, value: i64, type_id: TypeIdFor<Self>, ) -> Result<Self::Value<'scale, 'resolver>, Self::Error>
Called when an i64 is seen in the input bytes.
Source§fn visit_i128<'scale, 'resolver>(
self,
value: i128,
type_id: TypeIdFor<Self>,
) -> Result<Self::Value<'scale, 'resolver>, Self::Error>
fn visit_i128<'scale, 'resolver>( self, value: i128, type_id: TypeIdFor<Self>, ) -> Result<Self::Value<'scale, 'resolver>, Self::Error>
Called when an i128 is seen in the input bytes.
Source§fn visit_i256<'info>(
self,
value: &[u8; 32],
type_id: TypeIdFor<Self>,
) -> Result<Self::Value<'_, 'info>, Self::Error>
fn visit_i256<'info>( self, value: &[u8; 32], type_id: TypeIdFor<Self>, ) -> Result<Self::Value<'_, 'info>, Self::Error>
Called when an i256 is seen in the input bytes.
Source§fn visit_bitsequence<'scale, 'info>(
self,
value: &mut BitSequence<'scale>,
type_id: TypeIdFor<Self>,
) -> Result<Self::Value<'scale, 'info>, Self::Error>
fn visit_bitsequence<'scale, 'info>( self, value: &mut BitSequence<'scale>, type_id: TypeIdFor<Self>, ) -> Result<Self::Value<'scale, 'info>, Self::Error>
Called when a bit sequence is seen in the input bytes.
Source§fn visit_str<'scale, 'info>(
self,
value: &mut Str<'scale>,
type_id: TypeIdFor<Self>,
) -> Result<Self::Value<'scale, 'info>, Self::Error>
fn visit_str<'scale, 'info>( self, value: &mut Str<'scale>, type_id: TypeIdFor<Self>, ) -> Result<Self::Value<'scale, 'info>, Self::Error>
Called when a string value is seen in the input bytes.
Source§fn visit_sequence<'scale, 'resolver>(
self,
value: &mut Sequence<'scale, 'resolver, Self::TypeResolver>,
type_id: TypeIdFor<Self>,
) -> Result<Self::Value<'scale, 'resolver>, Self::Error>
fn visit_sequence<'scale, 'resolver>( self, value: &mut Sequence<'scale, 'resolver, Self::TypeResolver>, type_id: TypeIdFor<Self>, ) -> Result<Self::Value<'scale, 'resolver>, Self::Error>
Called when a sequence of values is seen in the input bytes.
Source§fn visit_array<'scale, 'resolver>(
self,
value: &mut Array<'scale, 'resolver, Self::TypeResolver>,
type_id: TypeIdFor<Self>,
) -> Result<Self::Value<'scale, 'resolver>, Self::Error>
fn visit_array<'scale, 'resolver>( self, value: &mut Array<'scale, 'resolver, Self::TypeResolver>, type_id: TypeIdFor<Self>, ) -> Result<Self::Value<'scale, 'resolver>, Self::Error>
Called when an array is seen in the input bytes.
Source§fn visit_tuple<'scale, 'resolver>(
self,
value: &mut Tuple<'scale, 'resolver, Self::TypeResolver>,
type_id: TypeIdFor<Self>,
) -> Result<Self::Value<'scale, 'resolver>, Self::Error>
fn visit_tuple<'scale, 'resolver>( self, value: &mut Tuple<'scale, 'resolver, Self::TypeResolver>, type_id: TypeIdFor<Self>, ) -> Result<Self::Value<'scale, 'resolver>, Self::Error>
Called when a tuple of values is seen in the input bytes.
Source§fn visit_variant<'scale, 'resolver>(
self,
value: &mut Variant<'scale, 'resolver, Self::TypeResolver>,
type_id: TypeIdFor<Self>,
) -> Result<Self::Value<'scale, 'resolver>, Self::Error>
fn visit_variant<'scale, 'resolver>( self, value: &mut Variant<'scale, 'resolver, Self::TypeResolver>, type_id: TypeIdFor<Self>, ) -> Result<Self::Value<'scale, 'resolver>, Self::Error>
Called when a variant is seen in the input bytes.
Source§fn visit_composite<'scale, 'resolver>(
self,
value: &mut Composite<'scale, 'resolver, Self::TypeResolver>,
type_id: TypeIdFor<Self>,
) -> Result<Self::Value<'scale, 'resolver>, Self::Error>
fn visit_composite<'scale, 'resolver>( self, value: &mut Composite<'scale, 'resolver, Self::TypeResolver>, type_id: TypeIdFor<Self>, ) -> Result<Self::Value<'scale, 'resolver>, Self::Error>
Called when a composite value is seen in the input bytes.
Source§fn unchecked_decode_as_type<'scale, 'resolver>(
self,
_input: &mut &'scale [u8],
_type_id: <Self::TypeResolver as TypeResolver>::TypeId,
_types: &'resolver Self::TypeResolver,
) -> DecodeAsTypeResult<Self, Result<Self::Value<'scale, 'resolver>, Self::Error>>
fn unchecked_decode_as_type<'scale, 'resolver>( self, _input: &mut &'scale [u8], _type_id: <Self::TypeResolver as TypeResolver>::TypeId, _types: &'resolver Self::TypeResolver, ) -> DecodeAsTypeResult<Self, Result<Self::Value<'scale, 'resolver>, Self::Error>>
This method is called immediately upon running
decode_with_visitor()
. By default we ignore
this call and return our visitor back (ie [DecodeAsTypeResult::Skipped(visitor)
]). If you choose to
do some decoding at this stage, return [DecodeAsTypeResult::Decoded(result)
]. In either case, any bytes
that you consume from the input (by altering what it points to) will be consumed for any subsequent visiting. Read moreSource§fn visit_unexpected<'scale, 'resolver>(
self,
unexpected: Unexpected,
) -> Result<Self::Value<'scale, 'resolver>, Self::Error>
fn visit_unexpected<'scale, 'resolver>( self, unexpected: Unexpected, ) -> Result<Self::Value<'scale, 'resolver>, Self::Error>
This is called when a visitor function that you’ve not provided an implementation is called.
You are provided an enum value corresponding to the function call, and can decide what to return
in this case. The default is to return an error to announce the unexpected value.
Auto Trait Implementations§
impl<Resolver> Freeze for TraceDecodingVisitor<Resolver>
impl<Resolver> RefUnwindSafe for TraceDecodingVisitor<Resolver>where
Resolver: RefUnwindSafe,
impl<Resolver> Send for TraceDecodingVisitor<Resolver>where
Resolver: Send,
impl<Resolver> Sync for TraceDecodingVisitor<Resolver>where
Resolver: Sync,
impl<Resolver> Unpin for TraceDecodingVisitor<Resolver>where
Resolver: Unpin,
impl<Resolver> UnwindSafe for TraceDecodingVisitor<Resolver>where
Resolver: UnwindSafe,
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
fn into_either(self, into_left: bool) -> Either<Self, Self> ⓘ
Converts
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self> ⓘ
Converts
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more