macro_rules! code_module {
(
vars: [ $( $var_name:literal => $var_value:expr ),* $(,)? ],
types: [ $( $type_name:literal [ $( ( $field_name:literal , $field_type:literal $( , $field_optional:literal )? ) ),* $(,)? ] ),* $(,)? ],
handlers: [ $( $handler_class:literal => $handler_fn:expr ),* $(,)? ],
emissions: [ $( $emit_class:literal => $emit_target:literal ),* $(,)? ]
$(,)?
) => { ... };
}Expand description
Declare an Code native module.
Generates the required #[no_mangle] C symbols:
code_module_abi_version() -> u32code_module_init() -> *const CodeModuleDesccode_module_set_emit(fn, ctx)— called by the host to provide the emit callback.
§Syntax
ⓘ
code_module! {
vars: [
"NAME" => value_expr,
],
types: [
"TypeName" [
("field", "FieldType"),
],
],
handlers: [
"ClassName" => handler_fn_ident,
],
emissions: [
"Log" => "base",
"Exception" => "base",
],
}All four sections are required but may be empty ([]).