Skip to main content

code_module

Macro code_module 

Source
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() -> u32
  • code_module_init() -> *const CodeModuleDesc
  • code_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 ([]).