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,
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
.§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 more§fn display<TContext, 'a, 'b>(
&'a self,
context: TContext
) -> ContextDisplayable<'a, Self, Context>where
TContext: Into<Context>,
fn display<TContext, 'a, 'b>(
&'a self,
context: TContext
) -> ContextDisplayable<'a, Self, Context>where
TContext: Into<Context>,
fn to_string<TContext, 'a, 'b>(&'a self, context: TContext) -> Stringwhere
TContext: Into<Context>,
source§impl<'s, 'a, 'b, E> ContextualSerialize<SerializationParameters<'s, 'a, E>> for RawPayload<'b, E>where
E: SerializableCustomExtension,
impl<'s, 'a, 'b, E> ContextualSerialize<SerializationParameters<'s, 'a, E>> for RawPayload<'b, E>where
E: SerializableCustomExtension,
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,
fn contextual_serialize<S>(
&self,
serializer: S,
context: &SerializationParameters<'s, 'a, E>
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>where
S: Serializer,
§fn serialize<S, TContext>(
&self,
serializer: S,
context: TContext
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>where
S: Serializer,
TContext: Into<Context>,
fn serialize<S, TContext>(
&self,
serializer: S,
context: TContext
) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>where
S: Serializer,
TContext: Into<Context>,
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>,
fn serializable<TContext, 'a, 'b>(
&'a self,
context: TContext
) -> ContextSerializable<'a, Self, Context>where
TContext: Into<Context>,
serde::Serialize
, which can be passed to serde
functions.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> 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§
§impl<U> As for U
impl<U> As for U
§fn as_<T>(self) -> Twhere
T: CastFrom<U>,
fn as_<T>(self) -> Twhere
T: CastFrom<U>,
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