Generates Rustler decoder code from Kiwi schemas for RustQ manifests.
This is an experimental bridge for optional native backends. It generates a
complete Rust source file for schema-dependent decoder functions and NIF
entrypoints; rustq.exs owns writing and freshness checks.
The generated source includes the Rustler imports, RustQ Rustler term helpers,
schema decoders, and requested entrypoints. The caller only needs to provide a
Decoder<'a> type with Kiwi primitive reader methods.
Summary
Functions
Returns a complete Rust source file for generated Rustler decoders.
Types
@type entrypoint() :: KiwiCodec.RustlerGenerator.Entrypoint.entrypoint()
Functions
@spec source( KiwiCodec.Schema.t(), keyword() ) :: String.t()
Returns a complete Rust source file for generated Rustler decoders.
generate :native_decoders, "native/my_nif/src/generated.rs" do
schema = KiwiCodec.parse_schema!(File.read!("priv/schema.kiwi"))
content KiwiCodec.RustlerGenerator.source(schema,
entrypoints: ["Node"],
module_prefix: "Example.Schema"
)
endOptions:
:definitions- schema definition names to generate, including their dependencies. Defaults to the requested entrypoint definitions, or all definitions when no entrypoints are requested.:entrypoints-:all,{:nif_stubs, module}, a NIF stub module, definition names, or{nif_name, definition_name}entries for generated NIFs. Definition names inferdecode_<definition_name>NIFs.:allgenerates one inferred NIF for every schema definition. A NIF stub module infers entries from one-aritydecode_*stubs whose suffix matches a schema definition. For{:nif_stubs, module}, the module must exposestubs/0.:module_prefix- Elixir module prefix for decoded structs.:decoder- Rust path imported asDecoder. Defaults to"crate::runtime::Decoder".:features- decoder families to generate. Defaults to[:full]. Use:sparseand:skipfor generic sparse map decoders and skip helpers used by projection-oriented native backends.