pub trait ManagedConvertible<M: TopEncodeMulti> {
    // Required method
    fn to_managed(&self) -> M;
}
Expand description

Provides a bridge from common Rust types to complex smart contract types managed by the MultiversX virtual machine.

This trait facilitates the conversion from native Rust types to managed types. Unlike NativeConvertible, this bridge establishes a many-to-many relationship, allowing multiple Rust types to be converted to multiple managed types.

Implementing this trait requires specifying the managed type parameter M and providing an implementation for the to_managed method, which will carry out the actual conversion.

Type Parameters

  • M: The managed type to which the native Rust type will be converted, constrained by the TopEncodeMulti trait.

Methods

  • to_managed: Performs the conversion from the native Rust type to the specified managed type.

Examples

  • String can be converted to ManagedBuffer, TokenIdentifier, or ManagedAddress.
  • Vec can be converted to ManagedVec.

struct YourStruct(String);

impl ManagedConvertible<ManagedBuffer<StaticApi>> for YourStruct {
    fn to_managed(&self) -> ManagedBuffer<StaticApi> {
        ManagedBuffer::from(&*self.0)
    }
}

Required Methods§

source

fn to_managed(&self) -> M

Converts the native Rust type to the specified managed type.

Implementations on Foreign Types§

source§

impl ManagedConvertible<bool> for bool

source§

impl ManagedConvertible<i8> for i8

source§

fn to_managed(&self) -> i8

source§

impl ManagedConvertible<i16> for i16

source§

fn to_managed(&self) -> i16

source§

impl ManagedConvertible<i32> for i32

source§

fn to_managed(&self) -> i32

source§

impl ManagedConvertible<i64> for i64

source§

fn to_managed(&self) -> i64

source§

impl ManagedConvertible<u8> for u8

source§

fn to_managed(&self) -> u8

source§

impl ManagedConvertible<u16> for u16

source§

fn to_managed(&self) -> u16

source§

impl ManagedConvertible<u32> for u32

source§

fn to_managed(&self) -> u32

source§

impl ManagedConvertible<u64> for u64

source§

fn to_managed(&self) -> u64

source§

impl ManagedConvertible<String> for String

source§

impl ManagedConvertible<IgnoreValue> for ()

source§

impl ManagedConvertible<CodeMetadata> for u16

source§

impl ManagedConvertible<BigInt<VMHooksApi<StaticApiBackend>>> for BigInt

source§

impl ManagedConvertible<BigUint<VMHooksApi<StaticApiBackend>>> for BigUint

source§

impl ManagedConvertible<ManagedBuffer<VMHooksApi<StaticApiBackend>>> for String

source§

impl ManagedConvertible<EgldOrEsdtTokenIdentifier<VMHooksApi<StaticApiBackend>>> for String

source§

impl ManagedConvertible<TokenIdentifier<VMHooksApi<StaticApiBackend>>> for String

source§

impl ManagedConvertible<BigInt> for BigInt

source§

impl ManagedConvertible<BigUint> for BigUint

source§

impl<C, T> ManagedConvertible<MultiValueEncoded<VMHooksApi<StaticApiBackend>, T>> for Vec<C>where C: ManagedConvertible<T>, T: TopEncodeMulti,

source§

impl<C, T> ManagedConvertible<ManagedVec<VMHooksApi<StaticApiBackend>, T>> for Vec<C>where C: ManagedConvertible<T>, T: TopEncodeMulti + NestedEncode + ManagedVecItem,

source§

impl<N, T> ManagedConvertible<Option<T>> for Option<N>where N: ManagedConvertible<T>, T: TopEncode + TopDecode + NestedEncode + NestedDecode,

source§

fn to_managed(&self) -> Option<T>

source§

impl<N, T> ManagedConvertible<OptionalValue<T>> for Option<N>where N: ManagedConvertible<T>, T: TopEncodeMulti,

source§

impl<T0, N0> ManagedConvertible<(T0,)> for (N0,)where T0: TopEncode + NestedEncode + NativeConvertible<Native = N0>, N0: ManagedConvertible<T0>,

source§

impl<T0, N0, T1, N1> ManagedConvertible<(T0, T1)> for (N0, N1)where T0: TopEncode + NestedEncode + NativeConvertible<Native = N0>, T1: TopEncode + NestedEncode + NativeConvertible<Native = N1>, N0: ManagedConvertible<T0>, N1: ManagedConvertible<T1>,

source§

impl<T0, N0, T1, N1, T2, N2> ManagedConvertible<(T0, T1, T2)> for (N0, N1, N2)where T0: TopEncode + NestedEncode + NativeConvertible<Native = N0>, T1: TopEncode + NestedEncode + NativeConvertible<Native = N1>, T2: TopEncode + NestedEncode + NativeConvertible<Native = N2>, N0: ManagedConvertible<T0>, N1: ManagedConvertible<T1>, N2: ManagedConvertible<T2>,

source§

impl<T0, N0, T1, N1, T2, N2, T3, N3> ManagedConvertible<(T0, T1, T2, T3)> for (N0, N1, N2, N3)where T0: TopEncode + NestedEncode + NativeConvertible<Native = N0>, T1: TopEncode + NestedEncode + NativeConvertible<Native = N1>, T2: TopEncode + NestedEncode + NativeConvertible<Native = N2>, T3: TopEncode + NestedEncode + NativeConvertible<Native = N3>, N0: ManagedConvertible<T0>, N1: ManagedConvertible<T1>, N2: ManagedConvertible<T2>, N3: ManagedConvertible<T3>,

source§

impl<T0, N0, T1, N1, T2, N2, T3, N3, T4, N4> ManagedConvertible<(T0, T1, T2, T3, T4)> for (N0, N1, N2, N3, N4)where T0: TopEncode + NestedEncode + NativeConvertible<Native = N0>, T1: TopEncode + NestedEncode + NativeConvertible<Native = N1>, T2: TopEncode + NestedEncode + NativeConvertible<Native = N2>, T3: TopEncode + NestedEncode + NativeConvertible<Native = N3>, T4: TopEncode + NestedEncode + NativeConvertible<Native = N4>, N0: ManagedConvertible<T0>, N1: ManagedConvertible<T1>, N2: ManagedConvertible<T2>, N3: ManagedConvertible<T3>, N4: ManagedConvertible<T4>,

source§

impl<T0, N0, T1, N1, T2, N2, T3, N3, T4, N4, T5, N5> ManagedConvertible<(T0, T1, T2, T3, T4, T5)> for (N0, N1, N2, N3, N4, N5)where T0: TopEncode + NestedEncode + NativeConvertible<Native = N0>, T1: TopEncode + NestedEncode + NativeConvertible<Native = N1>, T2: TopEncode + NestedEncode + NativeConvertible<Native = N2>, T3: TopEncode + NestedEncode + NativeConvertible<Native = N3>, T4: TopEncode + NestedEncode + NativeConvertible<Native = N4>, T5: TopEncode + NestedEncode + NativeConvertible<Native = N5>, N0: ManagedConvertible<T0>, N1: ManagedConvertible<T1>, N2: ManagedConvertible<T2>, N3: ManagedConvertible<T3>, N4: ManagedConvertible<T4>, N5: ManagedConvertible<T5>,

source§

impl<T0, N0, T1, N1, T2, N2, T3, N3, T4, N4, T5, N5, T6, N6> ManagedConvertible<(T0, T1, T2, T3, T4, T5, T6)> for (N0, N1, N2, N3, N4, N5, N6)where T0: TopEncode + NestedEncode + NativeConvertible<Native = N0>, T1: TopEncode + NestedEncode + NativeConvertible<Native = N1>, T2: TopEncode + NestedEncode + NativeConvertible<Native = N2>, T3: TopEncode + NestedEncode + NativeConvertible<Native = N3>, T4: TopEncode + NestedEncode + NativeConvertible<Native = N4>, T5: TopEncode + NestedEncode + NativeConvertible<Native = N5>, T6: TopEncode + NestedEncode + NativeConvertible<Native = N6>, N0: ManagedConvertible<T0>, N1: ManagedConvertible<T1>, N2: ManagedConvertible<T2>, N3: ManagedConvertible<T3>, N4: ManagedConvertible<T4>, N5: ManagedConvertible<T5>, N6: ManagedConvertible<T6>,

source§

impl<T0, N0, T1, N1, T2, N2, T3, N3, T4, N4, T5, N5, T6, N6, T7, N7> ManagedConvertible<(T0, T1, T2, T3, T4, T5, T6, T7)> for (N0, N1, N2, N3, N4, N5, N6, N7)where T0: TopEncode + NestedEncode + NativeConvertible<Native = N0>, T1: TopEncode + NestedEncode + NativeConvertible<Native = N1>, T2: TopEncode + NestedEncode + NativeConvertible<Native = N2>, T3: TopEncode + NestedEncode + NativeConvertible<Native = N3>, T4: TopEncode + NestedEncode + NativeConvertible<Native = N4>, T5: TopEncode + NestedEncode + NativeConvertible<Native = N5>, T6: TopEncode + NestedEncode + NativeConvertible<Native = N6>, T7: TopEncode + NestedEncode + NativeConvertible<Native = N7>, N0: ManagedConvertible<T0>, N1: ManagedConvertible<T1>, N2: ManagedConvertible<T2>, N3: ManagedConvertible<T3>, N4: ManagedConvertible<T4>, N5: ManagedConvertible<T5>, N6: ManagedConvertible<T6>, N7: ManagedConvertible<T7>,

source§

impl<T0, N0, T1, N1, T2, N2, T3, N3, T4, N4, T5, N5, T6, N6, T7, N7, T8, N8> ManagedConvertible<(T0, T1, T2, T3, T4, T5, T6, T7, T8)> for (N0, N1, N2, N3, N4, N5, N6, N7, N8)where T0: TopEncode + NestedEncode + NativeConvertible<Native = N0>, T1: TopEncode + NestedEncode + NativeConvertible<Native = N1>, T2: TopEncode + NestedEncode + NativeConvertible<Native = N2>, T3: TopEncode + NestedEncode + NativeConvertible<Native = N3>, T4: TopEncode + NestedEncode + NativeConvertible<Native = N4>, T5: TopEncode + NestedEncode + NativeConvertible<Native = N5>, T6: TopEncode + NestedEncode + NativeConvertible<Native = N6>, T7: TopEncode + NestedEncode + NativeConvertible<Native = N7>, T8: TopEncode + NestedEncode + NativeConvertible<Native = N8>, N0: ManagedConvertible<T0>, N1: ManagedConvertible<T1>, N2: ManagedConvertible<T2>, N3: ManagedConvertible<T3>, N4: ManagedConvertible<T4>, N5: ManagedConvertible<T5>, N6: ManagedConvertible<T6>, N7: ManagedConvertible<T7>, N8: ManagedConvertible<T8>,

source§

impl<T0, N0, T1, N1, T2, N2, T3, N3, T4, N4, T5, N5, T6, N6, T7, N7, T8, N8, T9, N9> ManagedConvertible<(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9)> for (N0, N1, N2, N3, N4, N5, N6, N7, N8, N9)where T0: TopEncode + NestedEncode + NativeConvertible<Native = N0>, T1: TopEncode + NestedEncode + NativeConvertible<Native = N1>, T2: TopEncode + NestedEncode + NativeConvertible<Native = N2>, T3: TopEncode + NestedEncode + NativeConvertible<Native = N3>, T4: TopEncode + NestedEncode + NativeConvertible<Native = N4>, T5: TopEncode + NestedEncode + NativeConvertible<Native = N5>, T6: TopEncode + NestedEncode + NativeConvertible<Native = N6>, T7: TopEncode + NestedEncode + NativeConvertible<Native = N7>, T8: TopEncode + NestedEncode + NativeConvertible<Native = N8>, T9: TopEncode + NestedEncode + NativeConvertible<Native = N9>, N0: ManagedConvertible<T0>, N1: ManagedConvertible<T1>, N2: ManagedConvertible<T2>, N3: ManagedConvertible<T3>, N4: ManagedConvertible<T4>, N5: ManagedConvertible<T5>, N6: ManagedConvertible<T6>, N7: ManagedConvertible<T7>, N8: ManagedConvertible<T8>, N9: ManagedConvertible<T9>,

source§

impl<T0, N0, T1, N1, T2, N2, T3, N3, T4, N4, T5, N5, T6, N6, T7, N7, T8, N8, T9, N9, T10, N10> ManagedConvertible<(T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10)> for (N0, N1, N2, N3, N4, N5, N6, N7, N8, N9, N10)where T0: TopEncode + NestedEncode + NativeConvertible<Native = N0>, T1: TopEncode + NestedEncode + NativeConvertible<Native = N1>, T2: TopEncode + NestedEncode + NativeConvertible<Native = N2>, T3: TopEncode + NestedEncode + NativeConvertible<Native = N3>, T4: TopEncode + NestedEncode + NativeConvertible<Native = N4>, T5: TopEncode + NestedEncode + NativeConvertible<Native = N5>, T6: TopEncode + NestedEncode + NativeConvertible<Native = N6>, T7: TopEncode + NestedEncode + NativeConvertible<Native = N7>, T8: TopEncode + NestedEncode + NativeConvertible<Native = N8>, T9: TopEncode + NestedEncode + NativeConvertible<Native = N9>, T10: TopEncode + NestedEncode + NativeConvertible<Native = N10>, N0: ManagedConvertible<T0>, N1: ManagedConvertible<T1>, N2: ManagedConvertible<T2>, N3: ManagedConvertible<T3>, N4: ManagedConvertible<T4>, N5: ManagedConvertible<T5>, N6: ManagedConvertible<T6>, N7: ManagedConvertible<T7>, N8: ManagedConvertible<T8>, N9: ManagedConvertible<T9>, N10: ManagedConvertible<T10>,

source§

impl<T0: TopEncodeMulti, C0: ManagedConvertible<T0>, T1: TopEncodeMulti, C1: ManagedConvertible<T1>> ManagedConvertible<MultiValue2<T0, T1>> for (C0, C1)

source§

fn to_managed(&self) -> MultiValue2<T0, T1>

source§

impl<T0: TopEncodeMulti, C0: ManagedConvertible<T0>, T1: TopEncodeMulti, C1: ManagedConvertible<T1>, T2: TopEncodeMulti, C2: ManagedConvertible<T2>> ManagedConvertible<MultiValue3<T0, T1, T2>> for (C0, C1, C2)

source§

fn to_managed(&self) -> MultiValue3<T0, T1, T2>

source§

impl<T0: TopEncodeMulti, C0: ManagedConvertible<T0>, T1: TopEncodeMulti, C1: ManagedConvertible<T1>, T2: TopEncodeMulti, C2: ManagedConvertible<T2>, T3: TopEncodeMulti, C3: ManagedConvertible<T3>> ManagedConvertible<MultiValue4<T0, T1, T2, T3>> for (C0, C1, C2, C3)

source§

fn to_managed(&self) -> MultiValue4<T0, T1, T2, T3>

source§

impl<T0: TopEncodeMulti, C0: ManagedConvertible<T0>, T1: TopEncodeMulti, C1: ManagedConvertible<T1>, T2: TopEncodeMulti, C2: ManagedConvertible<T2>, T3: TopEncodeMulti, C3: ManagedConvertible<T3>, T4: TopEncodeMulti, C4: ManagedConvertible<T4>> ManagedConvertible<MultiValue5<T0, T1, T2, T3, T4>> for (C0, C1, C2, C3, C4)

source§

fn to_managed(&self) -> MultiValue5<T0, T1, T2, T3, T4>

source§

impl<T0: TopEncodeMulti, C0: ManagedConvertible<T0>, T1: TopEncodeMulti, C1: ManagedConvertible<T1>, T2: TopEncodeMulti, C2: ManagedConvertible<T2>, T3: TopEncodeMulti, C3: ManagedConvertible<T3>, T4: TopEncodeMulti, C4: ManagedConvertible<T4>, T5: TopEncodeMulti, C5: ManagedConvertible<T5>> ManagedConvertible<MultiValue6<T0, T1, T2, T3, T4, T5>> for (C0, C1, C2, C3, C4, C5)

source§

fn to_managed(&self) -> MultiValue6<T0, T1, T2, T3, T4, T5>

source§

impl<T0: TopEncodeMulti, C0: ManagedConvertible<T0>, T1: TopEncodeMulti, C1: ManagedConvertible<T1>, T2: TopEncodeMulti, C2: ManagedConvertible<T2>, T3: TopEncodeMulti, C3: ManagedConvertible<T3>, T4: TopEncodeMulti, C4: ManagedConvertible<T4>, T5: TopEncodeMulti, C5: ManagedConvertible<T5>, T6: TopEncodeMulti, C6: ManagedConvertible<T6>> ManagedConvertible<MultiValue7<T0, T1, T2, T3, T4, T5, T6>> for (C0, C1, C2, C3, C4, C5, C6)

source§

fn to_managed(&self) -> MultiValue7<T0, T1, T2, T3, T4, T5, T6>

source§

impl<T0: TopEncodeMulti, C0: ManagedConvertible<T0>, T1: TopEncodeMulti, C1: ManagedConvertible<T1>, T2: TopEncodeMulti, C2: ManagedConvertible<T2>, T3: TopEncodeMulti, C3: ManagedConvertible<T3>, T4: TopEncodeMulti, C4: ManagedConvertible<T4>, T5: TopEncodeMulti, C5: ManagedConvertible<T5>, T6: TopEncodeMulti, C6: ManagedConvertible<T6>, T7: TopEncodeMulti, C7: ManagedConvertible<T7>> ManagedConvertible<MultiValue8<T0, T1, T2, T3, T4, T5, T6, T7>> for (C0, C1, C2, C3, C4, C5, C6, C7)

source§

fn to_managed(&self) -> MultiValue8<T0, T1, T2, T3, T4, T5, T6, T7>

source§

impl<T0: TopEncodeMulti, C0: ManagedConvertible<T0>, T1: TopEncodeMulti, C1: ManagedConvertible<T1>, T2: TopEncodeMulti, C2: ManagedConvertible<T2>, T3: TopEncodeMulti, C3: ManagedConvertible<T3>, T4: TopEncodeMulti, C4: ManagedConvertible<T4>, T5: TopEncodeMulti, C5: ManagedConvertible<T5>, T6: TopEncodeMulti, C6: ManagedConvertible<T6>, T7: TopEncodeMulti, C7: ManagedConvertible<T7>, T8: TopEncodeMulti, C8: ManagedConvertible<T8>> ManagedConvertible<MultiValue9<T0, T1, T2, T3, T4, T5, T6, T7, T8>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8)

source§

fn to_managed(&self) -> MultiValue9<T0, T1, T2, T3, T4, T5, T6, T7, T8>

source§

impl<T0: TopEncodeMulti, C0: ManagedConvertible<T0>, T1: TopEncodeMulti, C1: ManagedConvertible<T1>, T2: TopEncodeMulti, C2: ManagedConvertible<T2>, T3: TopEncodeMulti, C3: ManagedConvertible<T3>, T4: TopEncodeMulti, C4: ManagedConvertible<T4>, T5: TopEncodeMulti, C5: ManagedConvertible<T5>, T6: TopEncodeMulti, C6: ManagedConvertible<T6>, T7: TopEncodeMulti, C7: ManagedConvertible<T7>, T8: TopEncodeMulti, C8: ManagedConvertible<T8>, T9: TopEncodeMulti, C9: ManagedConvertible<T9>> ManagedConvertible<MultiValue10<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9)

source§

fn to_managed(&self) -> MultiValue10<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9>

source§

impl<T0: TopEncodeMulti, C0: ManagedConvertible<T0>, T1: TopEncodeMulti, C1: ManagedConvertible<T1>, T2: TopEncodeMulti, C2: ManagedConvertible<T2>, T3: TopEncodeMulti, C3: ManagedConvertible<T3>, T4: TopEncodeMulti, C4: ManagedConvertible<T4>, T5: TopEncodeMulti, C5: ManagedConvertible<T5>, T6: TopEncodeMulti, C6: ManagedConvertible<T6>, T7: TopEncodeMulti, C7: ManagedConvertible<T7>, T8: TopEncodeMulti, C8: ManagedConvertible<T8>, T9: TopEncodeMulti, C9: ManagedConvertible<T9>, T10: TopEncodeMulti, C10: ManagedConvertible<T10>> ManagedConvertible<MultiValue11<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>> for (C0, C1, C2, C3, C4, C5, C6, C7, C8, C9, C10)

source§

fn to_managed( &self ) -> MultiValue11<T0, T1, T2, T3, T4, T5, T6, T7, T8, T9, T10>

source§

impl<T, N> ManagedConvertible<MultiValueVec<T>> for Vec<N>where N: ManagedConvertible<T> + Clone, T: TopEncodeMulti,

source§

impl<const N: usize> ManagedConvertible<[u8; N]> for [u8; N]

source§

fn to_managed(&self) -> [u8; N]

Implementors§