pub struct Namespace<'a, F: Field, CS: ConstraintSystem<F>>(/* private fields */);
Expand description
This is a “namespaced” constraint system which borrows a constraint system (pushing a namespace context) and, when dropped, pops out of the namespace context.
Trait Implementations§
Source§impl<F: Field, CS: ConstraintSystem<F>> ConstraintSystem<F> for Namespace<'_, F, CS>
impl<F: Field, CS: ConstraintSystem<F>> ConstraintSystem<F> for Namespace<'_, F, CS>
Source§type Root = <CS as ConstraintSystem<F>>::Root
type Root = <CS as ConstraintSystem<F>>::Root
Represents the type of the “root” of this constraint system
so that nested namespaces can minimize indirection.
Source§fn alloc<FN, A, AR>(
&mut self,
annotation: A,
f: FN,
) -> Result<Variable, SynthesisError>
fn alloc<FN, A, AR>( &mut self, annotation: A, f: FN, ) -> Result<Variable, SynthesisError>
Allocate a private variable in the constraint system. The provided
function is used to determine the assignment of the variable. The
given
annotation
function is invoked in testing contexts in order
to derive a unique name for this variable in the current namespace.Source§fn alloc_input<FN, A, AR>(
&mut self,
annotation: A,
f: FN,
) -> Result<Variable, SynthesisError>
fn alloc_input<FN, A, AR>( &mut self, annotation: A, f: FN, ) -> Result<Variable, SynthesisError>
Allocate a public variable in the constraint system. The provided
function is used to determine the assignment of the variable.
Source§fn enforce<A, AR, LA, LB, LC>(&mut self, annotation: A, a: LA, b: LB, c: LC)where
A: FnOnce() -> AR,
AR: AsRef<str>,
LA: FnOnce(LinearCombination<F>) -> LinearCombination<F>,
LB: FnOnce(LinearCombination<F>) -> LinearCombination<F>,
LC: FnOnce(LinearCombination<F>) -> LinearCombination<F>,
fn enforce<A, AR, LA, LB, LC>(&mut self, annotation: A, a: LA, b: LB, c: LC)where
A: FnOnce() -> AR,
AR: AsRef<str>,
LA: FnOnce(LinearCombination<F>) -> LinearCombination<F>,
LB: FnOnce(LinearCombination<F>) -> LinearCombination<F>,
LC: FnOnce(LinearCombination<F>) -> LinearCombination<F>,
Enforce that
A
* B
= C
. The annotation
function is invoked in
testing contexts in order to derive a unique name for the constraint
in the current namespace.Source§fn push_namespace<NR, N>(&mut self, _: N)
fn push_namespace<NR, N>(&mut self, _: N)
Create a new (sub)namespace and enter into it. Not intended
for downstream use; use
namespace
instead.Source§fn pop_namespace(&mut self)
fn pop_namespace(&mut self)
Exit out of the existing namespace. Not intended for
downstream use; use
namespace
instead.Source§fn get_root(&mut self) -> &mut Self::Root
fn get_root(&mut self) -> &mut Self::Root
Gets the “root” constraint system, bypassing the namespacing.
Not intended for downstream use; use
namespace
instead.Source§fn num_constraints(&self) -> usize
fn num_constraints(&self) -> usize
Output the number of constraints in the system.
Source§fn num_public_variables(&self) -> usize
fn num_public_variables(&self) -> usize
Output the number of public input variables to the system.
Source§fn num_private_variables(&self) -> usize
fn num_private_variables(&self) -> usize
Output the number of private input variables to the system.
Source§fn is_in_setup_mode(&self) -> bool
fn is_in_setup_mode(&self) -> bool
Output whether the constraint system is in the setup mode.
Auto Trait Implementations§
impl<'a, F, CS> Freeze for Namespace<'a, F, CS>
impl<'a, F, CS> RefUnwindSafe for Namespace<'a, F, CS>where
CS: RefUnwindSafe,
F: RefUnwindSafe,
impl<'a, F, CS> Send for Namespace<'a, F, CS>where
CS: Send,
impl<'a, F, CS> Sync for Namespace<'a, F, CS>where
CS: Sync,
impl<'a, F, CS> Unpin for Namespace<'a, F, CS>where
F: Unpin,
impl<'a, F, CS> !UnwindSafe for Namespace<'a, F, CS>
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more