pub struct RustCodeGenerator { /* private fields */ }Expand description
Main code generator for transforming ELO AST to Rust code
Provides methods for generating Rust code from ELO expressions, including literal values, field access, operators, and more.
§Example
use elo_rust::RustCodeGenerator;
let generator = RustCodeGenerator::new();
let int_literal = generator.generate_literal_integer(42).unwrap();Implementations§
Source§impl RustCodeGenerator
impl RustCodeGenerator
Sourcepub fn with_context(type_context: TypeContext) -> Self
pub fn with_context(type_context: TypeContext) -> Self
Create a new code generator with a populated type context
§Arguments
type_context- Pre-configured type context with custom types
Sourcepub fn get_field_type(
&self,
type_name: &str,
field_name: &str,
) -> Option<&RustType>
pub fn get_field_type( &self, type_name: &str, field_name: &str, ) -> Option<&RustType>
Get the type of a field in a registered type
Sourcepub fn generate_function_signature(
&self,
name: &str,
input_type: &str,
) -> Result<TokenStream, String>
pub fn generate_function_signature( &self, name: &str, input_type: &str, ) -> Result<TokenStream, String>
Sourcepub fn generate_literal_integer(
&self,
value: i64,
) -> Result<TokenStream, String>
pub fn generate_literal_integer( &self, value: i64, ) -> Result<TokenStream, String>
Generate code for an integer literal
Sourcepub fn generate_literal_string(
&self,
value: &str,
) -> Result<TokenStream, String>
pub fn generate_literal_string( &self, value: &str, ) -> Result<TokenStream, String>
Generate code for a string literal
Sourcepub fn generate_literal_bool(&self, value: bool) -> Result<TokenStream, String>
pub fn generate_literal_bool(&self, value: bool) -> Result<TokenStream, String>
Generate code for a boolean literal
Sourcepub fn generate_field_access(
&self,
receiver: &str,
field: &str,
) -> Result<TokenStream, String>
pub fn generate_field_access( &self, receiver: &str, field: &str, ) -> Result<TokenStream, String>
Generate code for field access (e.g., user.age)
This generates the Rust code for accessing a field on a value. The receiver should be a valid Rust identifier (e.g., “user”, “input”).
§Arguments
receiver- The expression being accessed (e.g., “user”)field- The field name (e.g., “age”)
§Returns
A TokenStream representing receiver.field
§Example
let gen = RustCodeGenerator::new();
let tokens = gen.generate_field_access("user", "age")?;
// Generates: user.ageSourcepub fn generate_comment(&self, _text: &str) -> Result<TokenStream, String>
pub fn generate_comment(&self, _text: &str) -> Result<TokenStream, String>
Generate a single-line comment
Note: Comments are handled at the token manipulation level, not in token streams. This method is provided for future extensibility.
Sourcepub fn generate_doc_comment(&self, _text: &str) -> Result<TokenStream, String>
pub fn generate_doc_comment(&self, _text: &str) -> Result<TokenStream, String>
Generate a documentation comment
Note: Doc comments are handled at the token manipulation level, not in token streams. This method is provided for future extensibility.
Sourcepub fn generate_validator(
&self,
name: &str,
_elo_expr: &str,
input_type: &str,
) -> Result<TokenStream, String>
pub fn generate_validator( &self, name: &str, _elo_expr: &str, input_type: &str, ) -> Result<TokenStream, String>
Sourcepub fn generate_validator_impl(
&self,
struct_name: &str,
validator_fn_name: &str,
input_type: &str,
) -> Result<TokenStream, String>
pub fn generate_validator_impl( &self, struct_name: &str, validator_fn_name: &str, input_type: &str, ) -> Result<TokenStream, String>
Trait Implementations§
Source§impl Clone for RustCodeGenerator
impl Clone for RustCodeGenerator
Source§fn clone(&self) -> RustCodeGenerator
fn clone(&self) -> RustCodeGenerator
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more