pub trait ExprLowering {
type CellOutput;
Show 23 methods
// Required methods
fn lower_sum(
&self,
lhs: &Self::CellOutput,
rhs: &Self::CellOutput,
) -> Result<Self::CellOutput>;
fn lower_product(
&self,
lhs: &Self::CellOutput,
rhs: &Self::CellOutput,
) -> Result<Self::CellOutput>;
fn lower_neg(&self, expr: &Self::CellOutput) -> Result<Self::CellOutput>;
fn lower_constant(&self, f: Felt) -> Result<Self::CellOutput>;
fn lower_eq(
&self,
lhs: &Self::CellOutput,
rhs: &Self::CellOutput,
) -> Result<Self::CellOutput>;
fn lower_lt(
&self,
lhs: &Self::CellOutput,
rhs: &Self::CellOutput,
) -> Result<Self::CellOutput>;
fn lower_le(
&self,
lhs: &Self::CellOutput,
rhs: &Self::CellOutput,
) -> Result<Self::CellOutput>;
fn lower_gt(
&self,
lhs: &Self::CellOutput,
rhs: &Self::CellOutput,
) -> Result<Self::CellOutput>;
fn lower_ge(
&self,
lhs: &Self::CellOutput,
rhs: &Self::CellOutput,
) -> Result<Self::CellOutput>;
fn lower_ne(
&self,
lhs: &Self::CellOutput,
rhs: &Self::CellOutput,
) -> Result<Self::CellOutput>;
fn lower_and(
&self,
lhs: &Self::CellOutput,
rhs: &Self::CellOutput,
) -> Result<Self::CellOutput>;
fn lower_or(
&self,
lhs: &Self::CellOutput,
rhs: &Self::CellOutput,
) -> Result<Self::CellOutput>;
fn lower_not(&self, value: &Self::CellOutput) -> Result<Self::CellOutput>;
fn lower_true(&self) -> Result<Self::CellOutput>;
fn lower_false(&self) -> Result<Self::CellOutput>;
fn lower_det(&self, expr: &Self::CellOutput) -> Result<Self::CellOutput>;
fn lower_implies(
&self,
lhs: &Self::CellOutput,
rhs: &Self::CellOutput,
) -> Result<Self::CellOutput>;
fn lower_iff(
&self,
lhs: &Self::CellOutput,
rhs: &Self::CellOutput,
) -> Result<Self::CellOutput>;
fn lower_function_input(&self, i: usize) -> FuncIO;
fn lower_function_output(&self, o: usize) -> FuncIO;
fn lower_funcio<IO>(&self, io: IO) -> Result<Self::CellOutput>
where IO: Into<FuncIO>;
// Provided methods
fn lower_function_inputs(&self, ins: Range<usize>) -> Vec<FuncIO> { ... }
fn lower_function_outputs(&self, outs: Range<usize>) -> Vec<FuncIO> { ... }
}Required Associated Types§
type CellOutput
Required Methods§
fn lower_sum( &self, lhs: &Self::CellOutput, rhs: &Self::CellOutput, ) -> Result<Self::CellOutput>
fn lower_product( &self, lhs: &Self::CellOutput, rhs: &Self::CellOutput, ) -> Result<Self::CellOutput>
fn lower_neg(&self, expr: &Self::CellOutput) -> Result<Self::CellOutput>
fn lower_constant(&self, f: Felt) -> Result<Self::CellOutput>
fn lower_eq( &self, lhs: &Self::CellOutput, rhs: &Self::CellOutput, ) -> Result<Self::CellOutput>
fn lower_lt( &self, lhs: &Self::CellOutput, rhs: &Self::CellOutput, ) -> Result<Self::CellOutput>
fn lower_le( &self, lhs: &Self::CellOutput, rhs: &Self::CellOutput, ) -> Result<Self::CellOutput>
fn lower_gt( &self, lhs: &Self::CellOutput, rhs: &Self::CellOutput, ) -> Result<Self::CellOutput>
fn lower_ge( &self, lhs: &Self::CellOutput, rhs: &Self::CellOutput, ) -> Result<Self::CellOutput>
fn lower_ne( &self, lhs: &Self::CellOutput, rhs: &Self::CellOutput, ) -> Result<Self::CellOutput>
fn lower_and( &self, lhs: &Self::CellOutput, rhs: &Self::CellOutput, ) -> Result<Self::CellOutput>
fn lower_or( &self, lhs: &Self::CellOutput, rhs: &Self::CellOutput, ) -> Result<Self::CellOutput>
fn lower_not(&self, value: &Self::CellOutput) -> Result<Self::CellOutput>
fn lower_true(&self) -> Result<Self::CellOutput>
fn lower_false(&self) -> Result<Self::CellOutput>
fn lower_det(&self, expr: &Self::CellOutput) -> Result<Self::CellOutput>
fn lower_implies( &self, lhs: &Self::CellOutput, rhs: &Self::CellOutput, ) -> Result<Self::CellOutput>
fn lower_iff( &self, lhs: &Self::CellOutput, rhs: &Self::CellOutput, ) -> Result<Self::CellOutput>
fn lower_function_input(&self, i: usize) -> FuncIO
fn lower_function_output(&self, o: usize) -> FuncIO
fn lower_funcio<IO>(&self, io: IO) -> Result<Self::CellOutput>
Provided Methods§
fn lower_function_inputs(&self, ins: Range<usize>) -> Vec<FuncIO>
fn lower_function_outputs(&self, outs: Range<usize>) -> Vec<FuncIO>
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.