Structural Rustler code generation.
RustQ organizes Rustler generation by responsibility instead of repeating
nif_, term_, or resource_ prefixes on one large facade:
RustQ.Rustler.Nif— NIF wrappers, source-derived function metadata, Elixir stubs,NifStructdeclarations, andrustler::init!RustQ.Rustler.Term— safe term builders, decoders, encoders, and helpersRustQ.Rustler.Atom— atom declarations, caches, decoders, and dispatchRustQ.Rustler.Opts— keyword/options helpers and decodersRustQ.Rustler.Resource— resource declarations and decodersRustQ.Rustler.Schema— schema-driven Rustler generationRustQ.Rustler.Decode— composable structural decode expressions
Alias the modules used by a generator:
alias RustQ.Rustler.{Atom, Nif, Term}
rust "native/my_nif/src/generated_atoms.rs" do
Atom.declaration([:ok, :error])
end
rust "native/my_nif/src/generated_nifs.rs" do
Nif.wrappers_from_sources(nif_sources, schedule: :dirty_cpu)
end
generate "lib/my_app/native/generated_stubs.ex" do
content(Nif.stubs_from_sources(nif_sources, MyApp.Native.GeneratedStubs))
end
rust "native/my_nif/src/generated_term_helpers.rs" do
Term.helpers()
end