pub trait ManagedVecItem<M: ManagedTypeApi> {
    const PAYLOAD_SIZE: usize;
    const SKIPS_RESERIALIZATION: bool;

    // Required methods
    fn from_byte_reader<Reader: FnMut(&mut [u8])>(
        api: M,
        reader: Reader
    ) -> Self;
    fn to_byte_writer<R, Writer: FnMut(&[u8]) -> R>(&self, writer: Writer) -> R;
}
Expand description

Types that implement this trait can be items inside a ManagedVec. All these types need a payload, i.e a representation that gets stored in the underlying managed buffer. Not all data needs to be stored as payload, for instance for most managed types the payload is just the handle, whereas the mai ndata is kept by the VM.

Required Associated Constants§

source

const PAYLOAD_SIZE: usize

Size of the data stored in the underlying ManagedBuffer.

source

const SKIPS_RESERIALIZATION: bool

If true, then the encoding of the item is identical to the payload, and no further conversion is necessary (the underlying buffer can be used as-is during serialization). False for all managed types, but true for basic types (like u32).

Required Methods§

source

fn from_byte_reader<Reader: FnMut(&mut [u8])>(api: M, reader: Reader) -> Self

source

fn to_byte_writer<R, Writer: FnMut(&[u8]) -> R>(&self, writer: Writer) -> R

Object Safety§

This trait is not object safe.

Implementations on Foreign Types§

source§

impl<M: ManagedTypeApi> ManagedVecItem<M> for bool

source§

const PAYLOAD_SIZE: usize = 1usize

source§

const SKIPS_RESERIALIZATION: bool = true

source§

fn from_byte_reader<Reader: FnMut(&mut [u8])>(api: M, reader: Reader) -> Self

source§

fn to_byte_writer<R, Writer: FnMut(&[u8]) -> R>(&self, writer: Writer) -> R

source§

impl<M: ManagedTypeApi> ManagedVecItem<M> for i32

source§

const PAYLOAD_SIZE: usize = 4usize

source§

const SKIPS_RESERIALIZATION: bool = true

source§

fn from_byte_reader<Reader: FnMut(&mut [u8])>(_api: M, reader: Reader) -> Self

source§

fn to_byte_writer<R, Writer: FnMut(&[u8]) -> R>(&self, writer: Writer) -> R

source§

impl<M: ManagedTypeApi> ManagedVecItem<M> for i64

source§

const PAYLOAD_SIZE: usize = 8usize

source§

const SKIPS_RESERIALIZATION: bool = true

source§

fn from_byte_reader<Reader: FnMut(&mut [u8])>(_api: M, reader: Reader) -> Self

source§

fn to_byte_writer<R, Writer: FnMut(&[u8]) -> R>(&self, writer: Writer) -> R

source§

impl<M: ManagedTypeApi> ManagedVecItem<M> for u8

source§

const PAYLOAD_SIZE: usize = 1usize

source§

const SKIPS_RESERIALIZATION: bool = true

source§

fn from_byte_reader<Reader: FnMut(&mut [u8])>(_api: M, reader: Reader) -> Self

source§

fn to_byte_writer<R, Writer: FnMut(&[u8]) -> R>(&self, writer: Writer) -> R

source§

impl<M: ManagedTypeApi> ManagedVecItem<M> for u16

source§

const PAYLOAD_SIZE: usize = 2usize

source§

const SKIPS_RESERIALIZATION: bool = true

source§

fn from_byte_reader<Reader: FnMut(&mut [u8])>(_api: M, reader: Reader) -> Self

source§

fn to_byte_writer<R, Writer: FnMut(&[u8]) -> R>(&self, writer: Writer) -> R

source§

impl<M: ManagedTypeApi> ManagedVecItem<M> for u32

source§

const PAYLOAD_SIZE: usize = 4usize

source§

const SKIPS_RESERIALIZATION: bool = true

source§

fn from_byte_reader<Reader: FnMut(&mut [u8])>(_api: M, reader: Reader) -> Self

source§

fn to_byte_writer<R, Writer: FnMut(&[u8]) -> R>(&self, writer: Writer) -> R

source§

impl<M: ManagedTypeApi> ManagedVecItem<M> for u64

source§

const PAYLOAD_SIZE: usize = 8usize

source§

const SKIPS_RESERIALIZATION: bool = true

source§

fn from_byte_reader<Reader: FnMut(&mut [u8])>(_api: M, reader: Reader) -> Self

source§

fn to_byte_writer<R, Writer: FnMut(&[u8]) -> R>(&self, writer: Writer) -> R

source§

impl<M: ManagedTypeApi> ManagedVecItem<M> for usize

source§

const PAYLOAD_SIZE: usize = 4usize

source§

const SKIPS_RESERIALIZATION: bool = true

source§

fn from_byte_reader<Reader: FnMut(&mut [u8])>(_api: M, reader: Reader) -> Self

source§

fn to_byte_writer<R, Writer: FnMut(&[u8]) -> R>(&self, writer: Writer) -> R

Implementors§

source§

impl<M, T> ManagedVecItem<M> for ManagedVec<M, T>

source§

impl<M, const N: usize> ManagedVecItem<M> for ManagedByteArray<M, N>
where M: ManagedTypeApi,

source§

impl<M: ManagedTypeApi> ManagedVecItem<M> for DctLocalRole

source§

impl<M: ManagedTypeApi> ManagedVecItem<M> for BigInt<M>

source§

impl<M: ManagedTypeApi> ManagedVecItem<M> for BigUint<M>

source§

impl<M: ManagedTypeApi> ManagedVecItem<M> for DctTokenPayment<M>

source§

impl<M: ManagedTypeApi> ManagedVecItem<M> for DctTokenPaymentMultiArg<M>

source§

impl<M: ManagedTypeApi> ManagedVecItem<M> for EllipticCurve<M>

source§

impl<M: ManagedTypeApi> ManagedVecItem<M> for ManagedAddress<M>

source§

impl<M: ManagedTypeApi> ManagedVecItem<M> for ManagedBuffer<M>

source§

impl<M: ManagedTypeApi> ManagedVecItem<M> for TokenIdentifier<M>