Struct scrypto::prelude::RawPayload

source ·
pub struct RawPayload<'a, E>
where E: CustomExtension,
{ full_payload: Cow<'a, [u8]>, root_value_kind: ValueKind<<E as CustomExtension>::CustomValueKind>, custom_extension: PhantomData<E>, }
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

Fields§

§full_payload: Cow<'a, [u8]>§root_value_kind: ValueKind<<E as CustomExtension>::CustomValueKind>§custom_extension: PhantomData<E>

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>

§

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

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
§

fn display<TContext, 'a, 'b>( &'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
§

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

source§

impl<'s, 'a, 'b, E> ContextualSerialize<SerializationParameters<'s, 'a, E>> for RawPayload<'b, E>

source§

fn contextual_serialize<S>( &self, serializer: S, context: &SerializationParameters<'s, 'a, E> ) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
where S: Serializer,

Serializes the value to the given serde::Serializer, making use of the provided context. See also serialize, which is typically easier to use, as it takes an Into<Context> instead of a &Context. Read more
§

fn serialize<S, TContext>( &self, serializer: S, context: TContext ) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
where S: Serializer, TContext: Into<Context>,

Serializes the value to the given serde::Serializer, making use of the provided context. See also contextual_serialize, which takes a &Context instead of an Into<Context>. Read more
§

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

Returns an object implementing serde::Serialize, which can be passed to serde functions.
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,

§

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

impl<U> As for U

§

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> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

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> Same for T

§

type Output = T

Should always be Self
source§

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

§

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

§

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

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

§

fn vzip(self) -> V

source§

impl<T> BasicEncode for T

source§

impl<T> ManifestEncode for T

source§

impl<T> ScryptoEncode for T