pub trait ManagedVecItem: 'static {
    type Ref<'a>: Borrow<Self>;

    const PAYLOAD_SIZE: usize;
    const SKIPS_RESERIALIZATION: bool;

    // Required methods
    fn from_byte_reader<Reader: FnMut(&mut [u8])>(reader: Reader) -> Self;
    unsafe fn from_byte_reader_as_borrow<'a, Reader: FnMut(&mut [u8])>(
        reader: Reader
    ) -> Self::Ref<'a>;
    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 Types§

source

type Ref<'a>: Borrow<Self>

Reference representation of the ManagedVec item.

Implementations:

  • For items with Copy semantics, it should be the type itself.
  • For managed types, ManagedRef does the job.
  • For any other types, Self is currently used, although this is technically unsafe. TODO: wrap other types in readonly wrapper.

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])>(reader: Reader) -> Self

Parses given bytes as a an owned object.

source

unsafe fn from_byte_reader_as_borrow<'a, Reader: FnMut(&mut [u8])>( reader: Reader ) -> Self::Ref<'a>

Parses given bytes as a representation of the object, either owned, or a reference.

Safety

In certain cases this involves practically disregarding the lifetimes, hence it is unsafe.

source

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

Implementations on Foreign Types§

source§

impl ManagedVecItem for bool

source§

const PAYLOAD_SIZE: usize = 1usize

source§

const SKIPS_RESERIALIZATION: bool = true

§

type Ref<'a> = bool

source§

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

source§

unsafe fn from_byte_reader_as_borrow<'a, Reader: FnMut(&mut [u8])>( reader: Reader ) -> Self::Ref<'a>

source§

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

source§

impl ManagedVecItem for i32

source§

const PAYLOAD_SIZE: usize = 4usize

source§

const SKIPS_RESERIALIZATION: bool = true

§

type Ref<'a> = i32

source§

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

source§

unsafe fn from_byte_reader_as_borrow<'a, Reader: FnMut(&mut [u8])>( reader: Reader ) -> Self::Ref<'a>

source§

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

source§

impl ManagedVecItem for u8

source§

const PAYLOAD_SIZE: usize = 1usize

source§

const SKIPS_RESERIALIZATION: bool = true

§

type Ref<'a> = u8

source§

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

source§

unsafe fn from_byte_reader_as_borrow<'a, Reader: FnMut(&mut [u8])>( reader: Reader ) -> Self::Ref<'a>

source§

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

source§

impl ManagedVecItem for u32

source§

const PAYLOAD_SIZE: usize = 4usize

source§

const SKIPS_RESERIALIZATION: bool = true

§

type Ref<'a> = u32

source§

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

source§

unsafe fn from_byte_reader_as_borrow<'a, Reader: FnMut(&mut [u8])>( reader: Reader ) -> Self::Ref<'a>

source§

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

source§

impl ManagedVecItem for i64

source§

const PAYLOAD_SIZE: usize = 8usize

source§

const SKIPS_RESERIALIZATION: bool = true

§

type Ref<'a> = i64

source§

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

source§

unsafe fn from_byte_reader_as_borrow<'a, Reader: FnMut(&mut [u8])>( reader: Reader ) -> Self::Ref<'a>

source§

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

source§

impl<T> ManagedVecItem for Option<T>where T: ManagedVecItem,

source§

const PAYLOAD_SIZE: usize = _

source§

const SKIPS_RESERIALIZATION: bool = false

§

type Ref<'a> = Option<T>

source§

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

source§

unsafe fn from_byte_reader_as_borrow<'a, Reader: FnMut(&mut [u8])>( reader: Reader ) -> Self::Ref<'a>

source§

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

source§

impl ManagedVecItem for u64

source§

const PAYLOAD_SIZE: usize = 8usize

source§

const SKIPS_RESERIALIZATION: bool = true

§

type Ref<'a> = u64

source§

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

source§

unsafe fn from_byte_reader_as_borrow<'a, Reader: FnMut(&mut [u8])>( reader: Reader ) -> Self::Ref<'a>

source§

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

source§

impl<T, const N: usize> ManagedVecItem for [T; N]where T: ManagedVecItem,

source§

const PAYLOAD_SIZE: usize = _

source§

const SKIPS_RESERIALIZATION: bool = T::SKIPS_RESERIALIZATION

§

type Ref<'a> = [T; N]

source§

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

source§

unsafe fn from_byte_reader_as_borrow<'a, Reader: FnMut(&mut [u8])>( reader: Reader ) -> Self::Ref<'a>

source§

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

source§

impl ManagedVecItem for u16

source§

const PAYLOAD_SIZE: usize = 2usize

source§

const SKIPS_RESERIALIZATION: bool = true

§

type Ref<'a> = u16

source§

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

source§

unsafe fn from_byte_reader_as_borrow<'a, Reader: FnMut(&mut [u8])>( reader: Reader ) -> Self::Ref<'a>

source§

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

source§

impl ManagedVecItem for usize

source§

const PAYLOAD_SIZE: usize = 4usize

source§

const SKIPS_RESERIALIZATION: bool = true

§

type Ref<'a> = usize

source§

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

source§

unsafe fn from_byte_reader_as_borrow<'a, Reader: FnMut(&mut [u8])>( reader: Reader ) -> Self::Ref<'a>

source§

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

Implementors§

source§

impl ManagedVecItem for EsdtLocalRole

source§

impl<M, T> ManagedVecItem for ManagedOption<M, T>where M: ManagedTypeApi, T: ManagedType<M> + 'static,

source§

const PAYLOAD_SIZE: usize = 4usize

source§

const SKIPS_RESERIALIZATION: bool = false

§

type Ref<'a> = ManagedOption<M, T>

source§

impl<M, T> ManagedVecItem for ManagedVec<M, T>where M: ManagedTypeApi, T: ManagedVecItem,

source§

const PAYLOAD_SIZE: usize = 4usize

source§

const SKIPS_RESERIALIZATION: bool = false

§

type Ref<'a> = ManagedRef<'a, M, ManagedVec<M, T>>

source§

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

source§

const PAYLOAD_SIZE: usize = 4usize

source§

const SKIPS_RESERIALIZATION: bool = false

§

type Ref<'a> = ManagedRef<'a, M, ManagedByteArray<M, N>>

source§

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

source§

const PAYLOAD_SIZE: usize = 4usize

source§

const SKIPS_RESERIALIZATION: bool = false

§

type Ref<'a> = ManagedRef<'a, M, BigInt<M>>

source§

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

source§

const PAYLOAD_SIZE: usize = 4usize

source§

const SKIPS_RESERIALIZATION: bool = false

§

type Ref<'a> = ManagedRef<'a, M, BigUint<M>>

source§

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

source§

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

source§

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

source§

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

source§

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

source§

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

source§

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