pub trait Circuit<F: Field> {
type Config: Clone;
type FloorPlanner: FloorPlanner;
// Required methods
fn without_witnesses(&self) -> Self;
fn configure(meta: &mut ConstraintSystem<F>) -> Self::Config;
fn synthesize(
&self,
config: Self::Config,
layouter: impl Layouter<F>,
) -> Result<(), Error>;
}
Expand description
This is a trait that circuits provide implementations for so that the
backend prover can ask the circuit to synthesize using some given
ConstraintSystem
implementation.
Required Associated Types§
Sourcetype FloorPlanner: FloorPlanner
type FloorPlanner: FloorPlanner
The floor planner used for this circuit. This is an associated type of the
Circuit
trait because its behaviour is circuit-critical.
Required Methods§
Sourcefn without_witnesses(&self) -> Self
fn without_witnesses(&self) -> Self
Returns a copy of this circuit with no witness values (i.e. all witnesses set to
None
). For most circuits, this will be equal to Self::default()
.
Sourcefn configure(meta: &mut ConstraintSystem<F>) -> Self::Config
fn configure(meta: &mut ConstraintSystem<F>) -> Self::Config
The circuit is given an opportunity to describe the exact gate arrangement, column arrangement, etc.
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.