RawPayload

Struct RawPayload 

Source
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,

Source

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.

Source

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.

Source

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.

Source

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.

Source

pub fn as_encoded_value<'b>(&'b self) -> RawValue<'b, E>

Source

pub fn decode_into<T>(&self, depth_limit: usize) -> Result<T, DecodeError>

Source

pub fn root_value_kind( &self, ) -> ValueKind<<E as CustomExtension>::CustomValueKind>

Source

pub fn payload_bytes(&self) -> &[u8]

Source

pub fn encoded_root_value_bytes(&self) -> &[u8]

Source

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>

Source§

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,

Formats the value to the given 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>
where F: Write, TContext: Into<Context>,

Formats the value to the given fmt::Write buffer, making use of the provided context. See also contextual_format, which takes a &Context instead of an Into<Context>. Read more
Source§

fn display<'a, 'b, TContext>( &'a self, context: TContext, ) -> ContextDisplayable<'a, Self, Context>
where TContext: Into<Context>,

Returns an object implementing fmt::Display, which can be used in a format! style macro. Read more
Source§

fn to_string<'a, 'b, TContext>(&'a self, context: TContext) -> String
where TContext: Into<Context>,

Source§

impl<Ext, E> Encode<<Ext as CustomExtension>::CustomValueKind, E> for RawPayload<'_, Ext>

Source§

fn encode_value_kind(&self, encoder: &mut E) -> Result<(), EncodeError>

Encodes the SBOR value’s kind to the encoder
Source§

fn encode_body(&self, encoder: &mut E) -> Result<(), EncodeError>

Encodes the SBOR body of the type to the encoder. Read more
Source§

impl<'a, E> TryFrom<&'a [u8]> for RawPayload<'a, E>
where E: CustomExtension,

Source§

type Error = ()

The type returned in the event of a conversion error.
Source§

fn try_from( value: &'a [u8], ) -> Result<RawPayload<'a, E>, <RawPayload<'a, E> as TryFrom<&'a [u8]>>::Error>

Performs the conversion.

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> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<U> As for U

Source§

fn as_<T>(self) -> T
where T: CastFrom<U>,

Casts self to type T. The semantics of numeric casting with the as operator are followed, so <T as As>::as_::<U> can be used in the same way as T as U for numeric conversions. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T, U> ContextualTryInto<U> for T
where U: ContextualTryFrom<T>,

Source§

impl<T> Downcast for T
where T: Any,

Source§

fn into_any(self: Box<T>) -> Box<dyn Any>

Convert 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>

Convert 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)

Convert &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)

Convert &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
where T: Any + Send + Sync,

Source§

fn into_any_arc(self: Arc<T>) -> Arc<dyn Any + Sync + Send>

Convert Arc<Trait> (where Trait: Downcast) to Arc<Any>. Arc<Any> can then be further downcast into Arc<ConcreteType> where ConcreteType implements Trait.
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> FromBits<T> for T

Source§

fn from_bits(other: T) -> T

Convert other to Self, preserving bitwise representation
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
Source§

impl<X, Y> LabelledResolve<Y> for X
where Y: LabelledResolveFrom<X>,

Source§

fn labelled_resolve( self, resolver: &impl LabelResolver<<Y as LabelledResolvable>::ResolverOutput>, ) -> Y

Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<X, Y> Resolve<Y> for X
where Y: ResolveFrom<X>,

Source§

fn resolve(self) -> Y

Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> BasicEncode for T

Source§

impl<T> ManifestEncode for T

Source§

impl<T> ScryptoEncode for T

Source§

impl<X, T> VecEncode<X> for T
where X: CustomValueKind, T: for<'a> Encode<X, VecEncoder<'a, X>> + ?Sized,