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,
);