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:
- Parse
.dampenfiles at build time - Generate Rust code with
generate_application() - 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 Modelwithview()andupdate()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
- inventory
- Handler inventory extraction for build scripts
- status_
mapping - Status mapping code generation for widget state styling
- subscription
- Subscription code generation for production builds
- theme
- Theme code generation for production builds
- update
- Update function generation
- view
- View function generation
Structs§
- Codegen
Output - Result of code generation
- Generated
Application - Output structure from code generation
- Generated
Code - Container for generated Rust code with metadata
- Handler
Info - Metadata structure emitted by #[ui_handler] macro for build-time registration
Enums§
- Codegen
Error - Errors that can occur during code generation
- Handler
Signature Type - Handler signature classification for code generation
Functions§
- constant_
folding - Basic constant folding optimizations for generated code
- generate_
application - Generate complete application code from a Dampen document
- generate_
application_ with_ theme_ and_ subscriptions - Generate complete application code with theme and subscription support
- validate_
handlers - Validate that all handlers referenced in the document exist