pub struct RawPayload<'a, E>where
E: CustomExtension,{ /* private fields */ }Expand description
A wrapper for a full encoded SBOR payload, including the prefix byte.
Encode is implemented, but Decode is not - because the payload needs to be checked to be valid. Instead, you can use the typed or untyped traverser to validate the payload.
The payload is assumed to be valid, and for performance, the payload is encoded directly without checking if it is valid.
If you need to check the validity of a payload first:
- If you have a schema - use the typed traverser
- If it is schemaless - use the untyped traverser
Implementations§
Source§impl<'a, E> RawPayload<'a, E>where
E: CustomExtension,
impl<'a, E> RawPayload<'a, E>where
E: CustomExtension,
Sourcepub fn new_from_valid_slice(payload_bytes: &'a [u8]) -> RawPayload<'a, E>
pub fn new_from_valid_slice(payload_bytes: &'a [u8]) -> RawPayload<'a, E>
The bytes should include the prefix byte (eg 0x5b for basic SBOR).
It is the caller’s responsibility to ensure that a valid SBOR payload for extension E is passed to the caller.
This constructor does not check the prefix byte, and panics if the root value kind is invalid.
Sourcepub fn new_from_valid_slice_with_checks(
payload_bytes: &'a [u8],
) -> Option<RawPayload<'a, E>>
pub fn new_from_valid_slice_with_checks( payload_bytes: &'a [u8], ) -> Option<RawPayload<'a, E>>
The bytes should include the prefix byte (eg 0x5b for basic SBOR).
It is the caller’s responsibility to ensure that a valid SBOR payload for extension E is passed to the caller.
Unlike new_from_valid_payload_bytes, the constructor includes a prefix byte check to hopefully
catch some errors - but it is not guaranteed to catch all errors.
Sourcepub fn new_from_valid_owned(payload_bytes: Vec<u8>) -> RawPayload<'a, E>
pub fn new_from_valid_owned(payload_bytes: Vec<u8>) -> RawPayload<'a, E>
The bytes should include the prefix byte (eg 0x5b for basic SBOR).
It is the caller’s responsibility to ensure that a valid SBOR payload for extension E is passed to the caller.
This constructor does not check the prefix byte, and panics if the root value kind is invalid.
Sourcepub fn new_from_valid_owned_with_checks(
payload_bytes: Vec<u8>,
) -> Option<RawPayload<'a, E>>
pub fn new_from_valid_owned_with_checks( payload_bytes: Vec<u8>, ) -> Option<RawPayload<'a, E>>
The bytes should include the prefix byte (eg 0x5b for basic SBOR).
It is the caller’s responsibility to ensure that a valid SBOR payload for extension E is passed to the caller.
Unlike new_from_valid_payload_bytes, the constructor includes a prefix byte check to hopefully
catch some errors - but it is not guaranteed to catch all errors.
pub fn as_encoded_value<'b>(&'b self) -> RawValue<'b, E>
pub fn decode_into<T>(&self, depth_limit: usize) -> Result<T, DecodeError>where
T: for<'b> Decode<<E as CustomExtension>::CustomValueKind, VecDecoder<'b, <E as CustomExtension>::CustomValueKind>>,
pub fn root_value_kind( &self, ) -> ValueKind<<E as CustomExtension>::CustomValueKind>
pub fn payload_bytes(&self) -> &[u8] ⓘ
pub fn encoded_root_value_bytes(&self) -> &[u8] ⓘ
pub fn encoded_root_body_bytes(&self) -> &[u8] ⓘ
Trait Implementations§
Source§impl<'s, 'a, 'b, E> ContextualDisplay<ValueDisplayParameters<'s, 'a, E>> for RawPayload<'b, E>where
E: FormattableCustomExtension,
impl<'s, 'a, 'b, E> ContextualDisplay<ValueDisplayParameters<'s, 'a, E>> for RawPayload<'b, E>where
E: FormattableCustomExtension,
type Error = FormattingError
Source§fn contextual_format<F>(
&self,
f: &mut F,
options: &ValueDisplayParameters<'s, 'a, E>,
) -> Result<(), <RawPayload<'b, E> as ContextualDisplay<ValueDisplayParameters<'s, 'a, E>>>::Error>where
F: Write,
fn contextual_format<F>(
&self,
f: &mut F,
options: &ValueDisplayParameters<'s, 'a, E>,
) -> Result<(), <RawPayload<'b, E> as ContextualDisplay<ValueDisplayParameters<'s, 'a, E>>>::Error>where
F: Write,
fmt::Write buffer, making use of the provided context.
See also format, which is typically easier to use, as it takes an Into<Context>
instead of a &Context.Source§fn format<F, TContext>(
&self,
f: &mut F,
context: TContext,
) -> Result<(), Self::Error>
fn format<F, TContext>( &self, f: &mut F, context: TContext, ) -> Result<(), Self::Error>
fmt::Write buffer, making use of the provided context.
See also contextual_format, which takes a &Context instead of an Into<Context>. Read moreSource§fn display<'a, 'b, TContext>(
&'a self,
context: TContext,
) -> ContextDisplayable<'a, Self, Context>where
TContext: Into<Context>,
fn display<'a, 'b, TContext>(
&'a self,
context: TContext,
) -> ContextDisplayable<'a, Self, Context>where
TContext: Into<Context>,
fn to_string<'a, 'b, TContext>(&'a self, context: TContext) -> Stringwhere
TContext: Into<Context>,
Source§impl<Ext, E> Encode<<Ext as CustomExtension>::CustomValueKind, E> for RawPayload<'_, Ext>
impl<Ext, E> Encode<<Ext as CustomExtension>::CustomValueKind, E> for RawPayload<'_, Ext>
Source§fn encode_value_kind(&self, encoder: &mut E) -> Result<(), EncodeError>
fn encode_value_kind(&self, encoder: &mut E) -> Result<(), EncodeError>
Source§fn encode_body(&self, encoder: &mut E) -> Result<(), EncodeError>
fn encode_body(&self, encoder: &mut E) -> Result<(), EncodeError>
Source§impl<'a, E> TryFrom<&'a [u8]> for RawPayload<'a, E>where
E: CustomExtension,
impl<'a, E> TryFrom<&'a [u8]> for RawPayload<'a, E>where
E: CustomExtension,
Auto Trait Implementations§
impl<'a, E> Freeze for RawPayload<'a, E>
impl<'a, E> RefUnwindSafe for RawPayload<'a, E>
impl<'a, E> Send for RawPayload<'a, E>
impl<'a, E> Sync for RawPayload<'a, E>
impl<'a, E> Unpin for RawPayload<'a, E>
impl<'a, E> UnwindSafe for RawPayload<'a, E>
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
Source§impl<T, U> ContextualTryInto<U> for Twhere
U: ContextualTryFrom<T>,
impl<T, U> ContextualTryInto<U> for Twhere
U: ContextualTryFrom<T>,
type Error = <U as ContextualTryFrom<T>>::Error
type Context = <U as ContextualTryFrom<T>>::Context
fn contextual_try_into( self, context: &<U as ContextualTryFrom<T>>::Context, ) -> Result<U, <U as ContextualTryFrom<T>>::Error>
Source§impl<T> Downcast for Twhere
T: Any,
impl<T> Downcast for Twhere
T: Any,
Source§fn into_any(self: Box<T>) -> Box<dyn Any>
fn into_any(self: Box<T>) -> Box<dyn Any>
Box<dyn Trait> (where Trait: Downcast) to Box<dyn Any>. Box<dyn Any> can
then be further downcast into Box<ConcreteType> where ConcreteType implements Trait.Source§fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
fn into_any_rc(self: Rc<T>) -> Rc<dyn Any>
Rc<Trait> (where Trait: Downcast) to Rc<Any>. Rc<Any> can then be
further downcast into Rc<ConcreteType> where ConcreteType implements Trait.Source§fn as_any(&self) -> &(dyn Any + 'static)
fn as_any(&self) -> &(dyn Any + 'static)
&Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &Any’s vtable from &Trait’s.Source§fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
fn as_any_mut(&mut self) -> &mut (dyn Any + 'static)
&mut Trait (where Trait: Downcast) to &Any. This is needed since Rust cannot
generate &mut Any’s vtable from &mut Trait’s.Source§impl<T> DowncastSync for T
impl<T> DowncastSync for T
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> ⓘ
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> ⓘ
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