Trait elrond_codec::TopEncodeOutput [−][src]
pub trait TopEncodeOutput: Sized {
type NestedBuffer: NestedEncodeOutput;
fn set_slice_u8(self, bytes: &[u8]);
fn start_nested_encode(&self) -> Self::NestedBuffer;
fn finalize_nested_encode(self, nb: Self::NestedBuffer);
fn set_boxed_bytes(self, bytes: Box<[u8]>) { ... }
fn set_u64(self, value: u64) { ... }
fn set_i64(self, value: i64) { ... }
fn set_specialized<T, F>(
self,
_value: &T,
else_serialization: F
) -> Result<(), EncodeError>
where
T: TryStaticCast,
F: FnOnce(Self) -> Result<(), EncodeError>,
{ ... }
}
Expand description
Specifies objects that can receive the result of a TopEncode computation. in principle from NestedEncode performed on nested items.
All methods consume the object, so they can only be called once.
The trait is used in 3 scenarios:
- SC results
#[storage_set(...)]
- Serialize async call.
Associated Types
Type of NestedEncodeOutput
that can be spawned to gather serializations of children.
Required methods
fn set_slice_u8(self, bytes: &[u8])
fn start_nested_encode(&self) -> Self::NestedBuffer
fn finalize_nested_encode(self, nb: Self::NestedBuffer)
Provided methods
fn set_specialized<T, F>(
self,
_value: &T,
else_serialization: F
) -> Result<(), EncodeError> where
T: TryStaticCast,
F: FnOnce(Self) -> Result<(), EncodeError>,
fn set_specialized<T, F>(
self,
_value: &T,
else_serialization: F
) -> Result<(), EncodeError> where
T: TryStaticCast,
F: FnOnce(Self) -> Result<(), EncodeError>,
Allows special handling of special types.
Also requires an alternative serialization, in case the special handling is not covered.
The alternative serialization, else_serialization
is only called when necessary and
is normally compiled out via monomorphization.