pub struct RustRenderer { /* private fields */ }Expand description
Rust code generator that converts IR to idiomatic Rust code
This generator implements the CodeGenerator trait and produces
clean, well-formatted Rust code with proper derives and attributes.
§Features
- Derive Macros: Automatically adds Debug, Clone, PartialEq, and optional serde derives
- Nested Types: Generates all nested struct definitions
- Documentation: Preserves doc comments from IR
- Formatting: Produces properly indented, formatted code
- Type Safety: Maps IR types to appropriate Rust types
§Examples
use unistructgen_codegen::{RustRenderer, RenderOptions};
use unistructgen_core::{CodeGenerator, IRModule, IRStruct, IRType};
let mut module = IRModule::new("User".to_string());
let user_struct = IRStruct::new("User".to_string());
module.add_type(IRType::Struct(user_struct));
let renderer = RustRenderer::new(RenderOptions::default());
let code = renderer.generate(&module).expect("Failed to generate");
assert!(code.contains("pub struct User"));Implementations§
Source§impl RustRenderer
impl RustRenderer
Sourcepub fn builder() -> RustRendererBuilder
pub fn builder() -> RustRendererBuilder
Create a builder for configuring a RustRenderer
This is a convenience method that returns a new builder.
§Examples
use unistructgen_codegen::RustRenderer;
let renderer = RustRenderer::builder()
.minimal()
.build();Trait Implementations§
Source§impl CodeGenerator for RustRenderer
impl CodeGenerator for RustRenderer
Source§type Error = CodegenError
type Error = CodegenError
The error type this generator produces
Source§fn generate(&self, module: &IRModule) -> Result<String, Self::Error>
fn generate(&self, module: &IRModule) -> Result<String, Self::Error>
Generate code from an IR module Read more
Source§fn file_extension(&self) -> &str
fn file_extension(&self) -> &str
Get the file extension for generated code Read more
Source§fn validate(&self, module: &IRModule) -> Result<(), Self::Error>
fn validate(&self, module: &IRModule) -> Result<(), Self::Error>
Validate IR before generation (optional) Read more
Source§fn format(&self, code: String) -> Result<String, Self::Error>
fn format(&self, code: String) -> Result<String, Self::Error>
Format generated code (optional) Read more
Source§fn metadata(&self) -> GeneratorMetadata
fn metadata(&self) -> GeneratorMetadata
Get metadata about the generator (optional) Read more
Auto Trait Implementations§
impl Freeze for RustRenderer
impl RefUnwindSafe for RustRenderer
impl Send for RustRenderer
impl Sync for RustRenderer
impl Unpin for RustRenderer
impl UnsafeUnpin for RustRenderer
impl UnwindSafe for RustRenderer
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more
Source§impl<G> CodeGeneratorExt for Gwhere
G: CodeGenerator,
impl<G> CodeGeneratorExt for Gwhere
G: CodeGenerator,
Source§fn generate_formatted(&self, module: &IRModule) -> Result<String, Self::Error>
fn generate_formatted(&self, module: &IRModule) -> Result<String, Self::Error>
Generate and format code in one step
Source§fn generate_validated(&self, module: &IRModule) -> Result<String, Self::Error>
fn generate_validated(&self, module: &IRModule) -> Result<String, Self::Error>
Generate code with validation first