Module codegen

Module codegen 

Source
Expand description

Code generation for production builds

This module generates static Rust code from Dampen UI definitions. The generated code has zero runtime overhead compared to hand-written Iced code.

§Overview

Code generation is used in production mode to eliminate runtime parsing:

  1. Parse .dampen files at build time
  2. Generate Rust code with generate_application()
  3. Include generated code via include!(concat!(env!("OUT_DIR"), "/ui_generated.rs"))

§Example

// At build time:
let doc = parse(ui_xml)?;
let output = generate_application(&doc, "Model", "Message", &handlers)?;
fs::write("ui_generated.rs", output.code)?;

// At runtime:
include!("ui_generated.rs");
// No XML parsing, no runtime overhead!

§Generated Code Structure

The generated code includes:

  • Message enum from handler signatures
  • impl Application for Model with view() and update() methods
  • Inlined widget tree with evaluated bindings

Modules§

application
Application trait generation
bindings
Binding expression inlining for code generation
config
Configuration for code generation behavior
handlers
Handler dispatch code generation
update
Update function generation
view
View function generation

Structs§

CodegenOutput
Result of code generation
GeneratedApplication
Output structure from code generation
GeneratedCode
Container for generated Rust code with metadata
HandlerInfo
Metadata structure emitted by #[ui_handler] macro for build-time registration

Enums§

CodegenError
Errors that can occur during code generation
HandlerSignatureType
Handler signature classification for code generation

Functions§

constant_folding
Optimize constant expressions in generated code
generate_application
Generate complete application code from a Dampen document
validate_handlers
Validate that all handlers referenced in the document exist