use crate::circuit_builder::CircuitBuilder; use crate::field::extension_field::target::ExtensionTarget; use crate::field::extension_field::Extendable; use crate::gates::gate::{Gate, GateRef}; use crate::generator::WitnessGenerator; use crate::vars::{EvaluationTargets, EvaluationVars, EvaluationVarsBase}; /// A gate which does nothing. pub struct NoopGate; impl, const D: usize> Gate for NoopGate { fn id(&self) -> String { "NoopGate".into() } fn eval_unfiltered(&self, _vars: EvaluationVars) -> Vec { Vec::new() } fn eval_unfiltered_base(&self, _vars: EvaluationVarsBase) -> Vec { Vec::new() } fn eval_unfiltered_recursively( &self, _builder: &mut CircuitBuilder, _vars: EvaluationTargets, ) -> Vec> { Vec::new() } fn generators( &self, _gate_index: usize, _local_constants: &[F], ) -> Vec>> { Vec::new() } fn num_wires(&self) -> usize { 0 } fn num_constants(&self) -> usize { 0 } fn degree(&self) -> usize { 0 } fn num_constraints(&self) -> usize { 0 } } #[cfg(test)] mod tests { use crate::field::crandall_field::CrandallField; use crate::gates::gate_testing::test_low_degree; use crate::gates::noop::NoopGate; #[test] fn low_degree() { test_low_degree::(NoopGate) } }