pub trait Evaluator<Idx, B, U, T> {
type Value;
type Error;
// Required methods
fn evaluate_binary_operator(
&mut self,
span: Span<Idx>,
operator: B,
lhs: Self::Value,
rhs: Self::Value,
) -> Result<Self::Value, Self::Error>;
fn evaluate_unary_operator(
&mut self,
span: Span<Idx>,
operator: U,
argument: Self::Value,
) -> Result<Self::Value, Self::Error>;
fn evaluate_term(
&mut self,
span: Span<Idx>,
term: T,
) -> Result<Self::Value, Self::Error>;
// Provided method
fn evaluate<I>(&mut self, input: I) -> Result<Self::Value, Self::Error>
where I: IntoIterator<Item = Expression<Idx, B, U, T>> { ... }
}
Required Associated Types§
Required Methods§
fn evaluate_binary_operator( &mut self, span: Span<Idx>, operator: B, lhs: Self::Value, rhs: Self::Value, ) -> Result<Self::Value, Self::Error>
fn evaluate_unary_operator( &mut self, span: Span<Idx>, operator: U, argument: Self::Value, ) -> Result<Self::Value, Self::Error>
fn evaluate_term( &mut self, span: Span<Idx>, term: T, ) -> Result<Self::Value, Self::Error>
Provided Methods§
fn evaluate<I>(&mut self, input: I) -> Result<Self::Value, Self::Error>where
I: IntoIterator<Item = Expression<Idx, B, U, T>>,
Dyn Compatibility§
This trait is not dyn compatible.
In older versions of Rust, dyn compatibility was called "object safety", so this trait is not object safe.