pub trait VmCoreAir<AB, I>: BaseAirWithPublicValues<AB::F>{
// Required methods
fn eval(
&self,
builder: &mut AB,
local_core: &[AB::Var],
from_pc: AB::Var,
) -> AdapterAirContext<AB::Expr, I>;
fn start_offset(&self) -> usize;
// Provided methods
fn start_offset_expr(&self) -> AB::Expr { ... }
fn expr_to_global_expr(&self, local_expr: impl Into<AB::Expr>) -> AB::Expr { ... }
fn opcode_to_global_expr(&self, local_opcode: impl LocalOpcode) -> AB::Expr { ... }
}
Required Methods§
Sourcefn eval(
&self,
builder: &mut AB,
local_core: &[AB::Var],
from_pc: AB::Var,
) -> AdapterAirContext<AB::Expr, I>
fn eval( &self, builder: &mut AB, local_core: &[AB::Var], from_pc: AB::Var, ) -> AdapterAirContext<AB::Expr, I>
Returns (to_pc, interface)
.
Sourcefn start_offset(&self) -> usize
fn start_offset(&self) -> usize
The offset the opcodes by this chip start from.
This is usually just CorrespondingOpcode::CLASS_OFFSET
,
but sometimes (for modular chips, for example) it also depends on something else.
Provided Methods§
fn start_offset_expr(&self) -> AB::Expr
fn expr_to_global_expr(&self, local_expr: impl Into<AB::Expr>) -> AB::Expr
fn opcode_to_global_expr(&self, local_opcode: impl LocalOpcode) -> AB::Expr
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.