pub struct MultiGenerator { /* private fields */ }Expand description
Helper for chaining multiple generators
Allows generating code in multiple languages from the same IR. This is useful for projects that need to generate code in multiple target languages from a single schema.
§Examples
ⓘ
use unistructgen_core::{MultiGenerator, IRModule};
let multi = MultiGenerator::new()
.add("rust", rust_generator)
.add("typescript", ts_generator);
let results = multi.generate_all(&module)?;
for (name, code) in results {
println!("Generated {} code", name);
}Implementations§
Source§impl MultiGenerator
impl MultiGenerator
Sourcepub fn add<G>(self, name: impl Into<String>, generator: G) -> Selfwhere
G: CodeGenerator + 'static,
pub fn add<G>(self, name: impl Into<String>, generator: G) -> Selfwhere
G: CodeGenerator + 'static,
Add a generator
Sourcepub fn generate_all(
&self,
module: &IRModule,
) -> Result<Vec<(String, String)>, MultiGeneratorError>
pub fn generate_all( &self, module: &IRModule, ) -> Result<Vec<(String, String)>, MultiGeneratorError>
Generate code with all registered generators
Sourcepub fn generator_names(&self) -> Vec<&str>
pub fn generator_names(&self) -> Vec<&str>
Get list of registered generator names
Trait Implementations§
Auto Trait Implementations§
impl Freeze for MultiGenerator
impl !RefUnwindSafe for MultiGenerator
impl !Send for MultiGenerator
impl !Sync for MultiGenerator
impl Unpin for MultiGenerator
impl UnsafeUnpin for MultiGenerator
impl !UnwindSafe for MultiGenerator
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