multiversx_sc_codec

Trait TopEncodeOutput

Source
pub trait TopEncodeOutput: Sized {
    type NestedBuffer: NestedEncodeOutput;

    // 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_u64(self, value: u64) { ... }
    fn set_i64(self, value: i64) { ... }
    fn supports_specialized_type<T: TryStaticCast>() -> bool { ... }
    fn set_specialized<T, H>(
        self,
        _value: &T,
        h: H,
    ) -> Result<(), H::HandledErr>
       where T: TryStaticCast,
             H: EncodeErrorHandler { ... }
}
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.

Required Associated Types§

Source

type NestedBuffer: NestedEncodeOutput

Type of NestedEncodeOutput that can be spawned to gather serializations of children.

Required Methods§

Provided Methods§

Source

fn set_u64(self, value: u64)

Source

fn set_i64(self, value: i64)

Source

fn supports_specialized_type<T: TryStaticCast>() -> bool

Source

fn set_specialized<T, H>(self, _value: &T, h: H) -> Result<(), H::HandledErr>

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.

Dyn Compatibility§

This trait is not dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.

Implementors§