pub trait Eval<T = Value> {
// Required method
fn eval(&self, context: &mut Context) -> EvalResult<T>;
}
Expand description
Evaluation trait.
The return type T
defines to which output type the type is evaluated.
Usually, these output types are used in specific context:
Return type T | Context / Scope | Return value on error | Description |
---|---|---|---|
() | Assignment . | () | An assignment returns nothing but alters the symbol table. |
Value | Function calls, module statements, | Value::None | These trait implementations are |
parameter lists, argument lists. | mostly used when evaluating functions. | ||
Option<Model> | Workbenches, object bodies, source files, if. | None | Something is evaluated into a single model. |
Models | Statement, statement list, body, multiplicities. | Models::default() | A collection of models . |
Required Methods§
Sourcefn eval(&self, context: &mut Context) -> EvalResult<T>
fn eval(&self, context: &mut Context) -> EvalResult<T>
Evaluate a syntax element into a type T
.
Implementors§
impl Eval for Expression
impl Eval for Literal
impl Eval for Statement
impl Eval for Body
Evaluate the body into a value.
impl Eval for Call
impl Eval for ArrayExpression
impl Eval for RangeExpression
impl Eval for RangeFirst
impl Eval for RangeLast
impl Eval for TupleExpression
impl Eval for FormatExpression
impl Eval for FormatString
impl Eval for FunctionDefinition
impl Eval for QualifiedName
impl Eval for NumberLiteral
impl Eval for ModuleDefinition
impl Eval for ExpressionStatement
impl Eval for IfStatement
impl Eval for ReturnStatement
impl Eval for StatementList
impl Eval<Option<ResolutionAttribute>> for AttributeCommand
impl Eval<Option<ResolutionAttribute>> for Attribute
impl Eval<Option<ExportCommand>> for AttributeCommand
impl Eval<Option<Model>> for Expression
impl Eval<Option<Model>> for Statement
impl Eval<Option<Model>> for Marker
impl Eval<Option<Model>> for ExpressionStatement
impl Eval<Option<Model>> for IfStatement
impl Eval<Option<Rc<Theme>>> for AttributeCommand
impl Eval<Option<Rc<Theme>>> for Attribute
impl Eval<Option<Symbol>> for QualifiedName
impl Eval<Option<Color>> for AttributeCommand
impl Eval<Option<Color>> for Attribute
impl Eval<Option<Size2>> for AttributeCommand
impl Eval<Option<Size2>> for Attribute
impl Eval<()> for UseDeclaration
impl Eval<()> for AssignmentStatement
impl Eval<()> for UseStatement
impl Eval<Attributes> for AttributeList
impl Eval<Attributes> for StatementList
Parse inner attributes of a statement list.
impl Eval<Models> for StatementList
impl Eval<Model> for Rc<SourceFile>
impl Eval<Model> for Body
Evaluate the body into a single group: {}
.