Skip to main content

invocation_io

Macro invocation_io 

Source
macro_rules! invocation_io {
    (
        $struct_vis:vis struct $params_struct:ident {
            $( $field_vis:vis $field:ident : $ty:ty ),* $(,)?
        },
        entry_id = $entry_id:expr $(,)?
    ) => { ... };
    (
        $struct_vis:vis struct $params_struct:ident {
            $( $field_vis:vis $field:ident : $ty:ty ),* $(,)?
        },
        interface_id = $interface_id:expr,
        entry_id = $entry_id:expr $(,)?
    ) => { ... };
    (
        $struct_vis:vis struct $params_struct:ident {
            $( $field_vis:vis $field:ident : $ty:ty ),* $(,)?
        },
        entry_id = $entry_id:expr,
        decode = false $(,)?
    ) => { ... };
    (
        $struct_vis:vis struct $params_struct:ident {
            $( $field_vis:vis $field:ident : $ty:ty ),* $(,)?
        },
        interface_id = $interface_id:expr,
        entry_id = $entry_id:expr,
        decode = false $(,)?
    ) => { ... };
    (@with_decode
        $struct_vis:vis struct $params_struct:ident {
            $( $field_vis:vis $field:ident : $ty:ty, )*
        },
        interface_id = $interface_id:expr,
        entry_id = $entry_id:expr $(,)?
    ) => { ... };
    (@without_decode
        $struct_vis:vis struct $params_struct:ident {
            $( $field_vis:vis $field:ident : $ty:ty, )*
        },
        interface_id = $interface_id:expr,
        entry_id = $entry_id:expr $(,)?
    ) => { ... };
    (@impl_common
        $params_struct:ident,
        interface_id = $interface_id:expr,
        entry_id = $entry_id:expr $(,)?
    ) => { ... };
}
Expand description

Declares an invocation params struct together with its metadata and crate::gstd::InvocationIo implementation.

By default the generated struct derives crate::Decode and crate::TypeInfo, using $crate::scale_codec and $crate::type_info as the derive crate paths. Pass decode = false for ABI-only metadata structs that should not derive crate::Decode.

§Examples

// Default: derives Decode + TypeInfo
sails_rs::invocation_io!(
    pub struct __FooParams {
        pub(super) a: u32,
        pub(super) b: String,
    },
    entry_id = 0,
);

// ABI-only: derives TypeInfo only (no Decode)
sails_rs::invocation_io!(
    pub struct __BarParams {
        pub(super) addr: Address,
    },
    entry_id = 1,
    decode = false,
);