diff --git a/src/gates/insertion.rs b/src/gates/insertion.rs index 9977c6ac..7cdd0242 100644 --- a/src/gates/insertion.rs +++ b/src/gates/insertion.rs @@ -10,9 +10,21 @@ use crate::wire::Wire; use crate::witness::PartialWitness; /// A gate for inserting a value into a list at a non-deterministic location. -pub struct InsertionGate; +#[derive(Clone, Debug)] +pub(crate) struct InsertionGate, const D: usize> { + pub vec_size: usize, + pub _phantom: PhantomData, +} impl InsertionGate { + pub fn new(vec_size: usize) -> GateRef { + let gate = Self { + vec_size, + _phantom: PhantomData, + }; + GateRef::new(gate) + } + pub fn get, const D: usize>() -> GateRef { GateRef::new(InsertionGate) @@ -49,9 +61,10 @@ impl, const D: usize> Gate for InsertionGate { gate_index: usize, local_constants: &[F], ) -> Vec>> { - let gen = ConstantGenerator { + let gen = InsertionGenerator:: { gate_index, - constant: local_constants[0], + gate: self.clone(), + _phantom: PhantomData, }; vec![Box::new(gen)] } @@ -76,7 +89,8 @@ impl, const D: usize> Gate for InsertionGate { #[derive(Debug)] struct InsertionGenerator { gate_index: usize, - + gate: InterpolationGate, + _phantom: PhantomData, } impl SimpleGenerator for InsertionGenerator {