pub struct NativeChip<F: CircuitField> { /* private fields */ }Expand description
Chip for Native operations
Implementations§
Source§impl<F: CircuitField> NativeChip<F>
impl<F: CircuitField> NativeChip<F>
Sourcepub fn nb_public_inputs(&self) -> usize
pub fn nb_public_inputs(&self) -> usize
The total number of public inputs (as raw scalars) that have been constrained so far by this chip.
Trait Implementations§
Source§impl<F> ArithInstructions<F, AssignedCell<F, F>> for NativeChip<F>where
F: CircuitField,
impl<F> ArithInstructions<F, AssignedCell<F, F>> for NativeChip<F>where
F: CircuitField,
Source§fn linear_combination(
&self,
layouter: &mut impl Layouter<F>,
terms: &[(F, AssignedNative<F>)],
constant: F,
) -> Result<AssignedNative<F>, Error>
fn linear_combination( &self, layouter: &mut impl Layouter<F>, terms: &[(F, AssignedNative<F>)], constant: F, ) -> Result<AssignedNative<F>, Error>
Addition of many elements, given a slice of terms of the form
(coeff_i, x_i) and a constant k, returns
k + (sum_i coeff_i * x_i). Read moreSource§fn mul(
&self,
layouter: &mut impl Layouter<F>,
x: &AssignedNative<F>,
y: &AssignedNative<F>,
multiplying_constant: Option<F>,
) -> Result<AssignedNative<F>, Error>
fn mul( &self, layouter: &mut impl Layouter<F>, x: &AssignedNative<F>, y: &AssignedNative<F>, multiplying_constant: Option<F>, ) -> Result<AssignedNative<F>, Error>
Multiplication, possibly with an additional multiplying constant. Read more
Source§fn div(
&self,
layouter: &mut impl Layouter<F>,
x: &AssignedNative<F>,
y: &AssignedNative<F>,
) -> Result<AssignedNative<F>, Error>
fn div( &self, layouter: &mut impl Layouter<F>, x: &AssignedNative<F>, y: &AssignedNative<F>, ) -> Result<AssignedNative<F>, Error>
Source§fn inv(
&self,
layouter: &mut impl Layouter<F>,
x: &AssignedNative<F>,
) -> Result<AssignedNative<F>, Error>
fn inv( &self, layouter: &mut impl Layouter<F>, x: &AssignedNative<F>, ) -> Result<AssignedNative<F>, Error>
Inversion (multiplicative inverse).
The circuit will become unsatisfiable if
x = 0. Read moreSource§fn inv0(
&self,
layouter: &mut impl Layouter<F>,
x: &AssignedNative<F>,
) -> Result<AssignedNative<F>, Error>
fn inv0( &self, layouter: &mut impl Layouter<F>, x: &AssignedNative<F>, ) -> Result<AssignedNative<F>, Error>
Source§fn add_and_mul(
&self,
layouter: &mut impl Layouter<F>,
(a, x): (F, &AssignedNative<F>),
(b, y): (F, &AssignedNative<F>),
(c, z): (F, &AssignedNative<F>),
k: F,
m: F,
) -> Result<AssignedNative<F>, Error>
fn add_and_mul( &self, layouter: &mut impl Layouter<F>, (a, x): (F, &AssignedNative<F>), (b, y): (F, &AssignedNative<F>), (c, z): (F, &AssignedNative<F>), k: F, m: F, ) -> Result<AssignedNative<F>, Error>
Computes
a*x + b*y + c*z + k + m*x*y.Source§fn add_constants(
&self,
layouter: &mut impl Layouter<F>,
xs: &[AssignedNative<F>],
constants: &[F],
) -> Result<Vec<AssignedNative<F>>, Error>
fn add_constants( &self, layouter: &mut impl Layouter<F>, xs: &[AssignedNative<F>], constants: &[F], ) -> Result<Vec<AssignedNative<F>>, Error>
Pair-wise addition of a constant slice to a slice of assigned values. Read more
Source§fn add(
&self,
layouter: &mut impl Layouter<F>,
x: &Assigned,
y: &Assigned,
) -> Result<Assigned, Error>
fn add( &self, layouter: &mut impl Layouter<F>, x: &Assigned, y: &Assigned, ) -> Result<Assigned, Error>
Addition. Read more
Source§fn sub(
&self,
layouter: &mut impl Layouter<F>,
x: &Assigned,
y: &Assigned,
) -> Result<Assigned, Error>
fn sub( &self, layouter: &mut impl Layouter<F>, x: &Assigned, y: &Assigned, ) -> Result<Assigned, Error>
Subtraction. Read more
Source§fn neg(
&self,
layouter: &mut impl Layouter<F>,
x: &Assigned,
) -> Result<Assigned, Error>
fn neg( &self, layouter: &mut impl Layouter<F>, x: &Assigned, ) -> Result<Assigned, Error>
Negation (additive inverse). Read more
Source§fn add_constant(
&self,
layouter: &mut impl Layouter<F>,
x: &Assigned,
constant: Assigned::Element,
) -> Result<Assigned, Error>
fn add_constant( &self, layouter: &mut impl Layouter<F>, x: &Assigned, constant: Assigned::Element, ) -> Result<Assigned, Error>
Addition of a constant. Read more
Source§fn mul_by_constant(
&self,
layouter: &mut impl Layouter<F>,
x: &Assigned,
constant: Assigned::Element,
) -> Result<Assigned, Error>
fn mul_by_constant( &self, layouter: &mut impl Layouter<F>, x: &Assigned, constant: Assigned::Element, ) -> Result<Assigned, Error>
Multiplication by a constant.
This function is potentially more efficient than composing
assigned_fixed and
mul. Read more
Source§impl<F> AssertionInstructions<F, AssignedBit<F>> for NativeChip<F>where
F: CircuitField,
impl<F> AssertionInstructions<F, AssignedBit<F>> for NativeChip<F>where
F: CircuitField,
Source§fn assert_equal(
&self,
layouter: &mut impl Layouter<F>,
x: &AssignedBit<F>,
y: &AssignedBit<F>,
) -> Result<(), Error>
fn assert_equal( &self, layouter: &mut impl Layouter<F>, x: &AssignedBit<F>, y: &AssignedBit<F>, ) -> Result<(), Error>
Ensures that the given assigned elements are the same. Read more
Source§fn assert_not_equal(
&self,
layouter: &mut impl Layouter<F>,
x: &AssignedBit<F>,
y: &AssignedBit<F>,
) -> Result<(), Error>
fn assert_not_equal( &self, layouter: &mut impl Layouter<F>, x: &AssignedBit<F>, y: &AssignedBit<F>, ) -> Result<(), Error>
Ensures that the given assigned elements are different. Read more
Source§fn assert_equal_to_fixed(
&self,
layouter: &mut impl Layouter<F>,
x: &AssignedBit<F>,
b: bool,
) -> Result<(), Error>
fn assert_equal_to_fixed( &self, layouter: &mut impl Layouter<F>, x: &AssignedBit<F>, b: bool, ) -> Result<(), Error>
Ensures that the given assigned element is equal to the given constant. Read more
Source§fn assert_not_equal_to_fixed(
&self,
layouter: &mut impl Layouter<F>,
x: &AssignedBit<F>,
constant: bool,
) -> Result<(), Error>
fn assert_not_equal_to_fixed( &self, layouter: &mut impl Layouter<F>, x: &AssignedBit<F>, constant: bool, ) -> Result<(), Error>
Ensures that the given assigned element is different from the given
constant. Read more
Source§impl<F> AssertionInstructions<F, AssignedCell<F, F>> for NativeChip<F>where
F: CircuitField,
impl<F> AssertionInstructions<F, AssignedCell<F, F>> for NativeChip<F>where
F: CircuitField,
Source§fn assert_equal(
&self,
layouter: &mut impl Layouter<F>,
x: &AssignedNative<F>,
y: &AssignedNative<F>,
) -> Result<(), Error>
fn assert_equal( &self, layouter: &mut impl Layouter<F>, x: &AssignedNative<F>, y: &AssignedNative<F>, ) -> Result<(), Error>
Ensures that the given assigned elements are the same. Read more
Source§fn assert_not_equal(
&self,
layouter: &mut impl Layouter<F>,
x: &AssignedNative<F>,
y: &AssignedNative<F>,
) -> Result<(), Error>
fn assert_not_equal( &self, layouter: &mut impl Layouter<F>, x: &AssignedNative<F>, y: &AssignedNative<F>, ) -> Result<(), Error>
Ensures that the given assigned elements are different. Read more
Source§fn assert_equal_to_fixed(
&self,
layouter: &mut impl Layouter<F>,
x: &AssignedNative<F>,
constant: F,
) -> Result<(), Error>
fn assert_equal_to_fixed( &self, layouter: &mut impl Layouter<F>, x: &AssignedNative<F>, constant: F, ) -> Result<(), Error>
Ensures that the given assigned element is equal to the given constant. Read more
Source§fn assert_not_equal_to_fixed(
&self,
layouter: &mut impl Layouter<F>,
x: &AssignedNative<F>,
constant: F,
) -> Result<(), Error>
fn assert_not_equal_to_fixed( &self, layouter: &mut impl Layouter<F>, x: &AssignedNative<F>, constant: F, ) -> Result<(), Error>
Ensures that the given assigned element is different from the given
constant. Read more
Source§impl<F> AssignmentInstructions<F, AssignedBit<F>> for NativeChip<F>where
F: CircuitField,
impl<F> AssignmentInstructions<F, AssignedBit<F>> for NativeChip<F>where
F: CircuitField,
Source§fn assign(
&self,
layouter: &mut impl Layouter<F>,
value: Value<bool>,
) -> Result<AssignedBit<F>, Error>
fn assign( &self, layouter: &mut impl Layouter<F>, value: Value<bool>, ) -> Result<AssignedBit<F>, Error>
Assigns an element as a private input to the circuit. Read more
Source§fn assign_fixed(
&self,
layouter: &mut impl Layouter<F>,
bit: bool,
) -> Result<AssignedBit<F>, Error>
fn assign_fixed( &self, layouter: &mut impl Layouter<F>, bit: bool, ) -> Result<AssignedBit<F>, Error>
Assigns a fixed (constant) element. Read more
Source§impl<F> AssignmentInstructions<F, AssignedCell<F, F>> for NativeChip<F>where
F: CircuitField,
impl<F> AssignmentInstructions<F, AssignedCell<F, F>> for NativeChip<F>where
F: CircuitField,
Source§fn assign(
&self,
layouter: &mut impl Layouter<F>,
value: Value<F>,
) -> Result<AssignedNative<F>, Error>
fn assign( &self, layouter: &mut impl Layouter<F>, value: Value<F>, ) -> Result<AssignedNative<F>, Error>
Assigns an element as a private input to the circuit. Read more
Source§fn assign_fixed(
&self,
layouter: &mut impl Layouter<F>,
constant: F,
) -> Result<AssignedNative<F>, Error>
fn assign_fixed( &self, layouter: &mut impl Layouter<F>, constant: F, ) -> Result<AssignedNative<F>, Error>
Assigns a fixed (constant) element. Read more
Source§fn assign_many(
&self,
layouter: &mut impl Layouter<F>,
values: &[Value<F>],
) -> Result<Vec<AssignedNative<F>>, Error>
fn assign_many( &self, layouter: &mut impl Layouter<F>, values: &[Value<F>], ) -> Result<Vec<AssignedNative<F>>, Error>
Assigns several elements as private inputs to the circuit. Read more
Source§impl<F> BinaryInstructions<F> for NativeChip<F>where
F: CircuitField,
impl<F> BinaryInstructions<F> for NativeChip<F>where
F: CircuitField,
Source§fn and(
&self,
layouter: &mut impl Layouter<F>,
bits: &[AssignedBit<F>],
) -> Result<AssignedBit<F>, Error>
fn and( &self, layouter: &mut impl Layouter<F>, bits: &[AssignedBit<F>], ) -> Result<AssignedBit<F>, Error>
Conjunction of the given assigned bits. Read more
Source§fn or(
&self,
layouter: &mut impl Layouter<F>,
bits: &[AssignedBit<F>],
) -> Result<AssignedBit<F>, Error>
fn or( &self, layouter: &mut impl Layouter<F>, bits: &[AssignedBit<F>], ) -> Result<AssignedBit<F>, Error>
Disjunction of the given assigned bits. Read more
Source§fn xor(
&self,
layouter: &mut impl Layouter<F>,
bits: &[AssignedBit<F>],
) -> Result<AssignedBit<F>, Error>
fn xor( &self, layouter: &mut impl Layouter<F>, bits: &[AssignedBit<F>], ) -> Result<AssignedBit<F>, Error>
Exclusive-OR of all the given assigned bits. Read more
Source§fn not(
&self,
layouter: &mut impl Layouter<F>,
bit: &AssignedBit<F>,
) -> Result<AssignedBit<F>, Error>
fn not( &self, layouter: &mut impl Layouter<F>, bit: &AssignedBit<F>, ) -> Result<AssignedBit<F>, Error>
Negation of the given assigned bit. Read more
Source§impl<F> CanonicityInstructions<F, AssignedCell<F, F>> for NativeChip<F>where
F: CircuitField,
impl<F> CanonicityInstructions<F, AssignedCell<F, F>> for NativeChip<F>where
F: CircuitField,
Source§fn le_bits_lower_than(
&self,
layouter: &mut impl Layouter<F>,
bits: &[AssignedBit<F>],
bound: BigUint,
) -> Result<AssignedBit<F>, Error>
fn le_bits_lower_than( &self, layouter: &mut impl Layouter<F>, bits: &[AssignedBit<F>], bound: BigUint, ) -> Result<AssignedBit<F>, Error>
Returns
true iff the integer represented by the given sequence of
assigned bits, interpreted in little-endian, is strictly lower than the
given bound. Read moreSource§fn le_bits_geq_than(
&self,
layouter: &mut impl Layouter<F>,
bits: &[AssignedBit<F>],
bound: BigUint,
) -> Result<AssignedBit<F>, Error>
fn le_bits_geq_than( &self, layouter: &mut impl Layouter<F>, bits: &[AssignedBit<F>], bound: BigUint, ) -> Result<AssignedBit<F>, Error>
Returns
true iff the integer represented by the given sequence of
assigned bits, interpreted in little-endian, is greater than or equal
to the given bound.Source§fn is_canonical(
&self,
layouter: &mut impl Layouter<F>,
bits: &[AssignedBit<F>],
) -> Result<AssignedBit<F>, Error>
fn is_canonical( &self, layouter: &mut impl Layouter<F>, bits: &[AssignedBit<F>], ) -> Result<AssignedBit<F>, Error>
Returns
true iff the given sequence of bits is canonical in the
underlying field Assigned::Element. Namely, iff
|bits| <= Assigned::Element::NUM_BITS and the integer represented by
the given sequence of assigned bits, interpreted in little-endian,
is strictly lower than the order of Assigned::Element. Read moreSource§impl<F: CircuitField> Chip<F> for NativeChip<F>
impl<F: CircuitField> Chip<F> for NativeChip<F>
Source§type Config = NativeConfig
type Config = NativeConfig
A type that holds the configuration for this chip, and any other state
it may need during circuit synthesis, that can be derived during
Circuit::configure.Source§type Loaded = ()
type Loaded = ()
A type that holds any general chip state that needs to be loaded at the
start of
Circuit::synthesize. This might simply be () for some
chips.Source§impl<F: Clone + CircuitField> Clone for NativeChip<F>
impl<F: Clone + CircuitField> Clone for NativeChip<F>
Source§fn clone(&self) -> NativeChip<F>
fn clone(&self) -> NativeChip<F>
Returns a duplicate of the value. Read more
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl<F> CommittedInstanceInstructions<F, AssignedCell<F, F>> for NativeChip<F>where
F: CircuitField,
impl<F> CommittedInstanceInstructions<F, AssignedCell<F, F>> for NativeChip<F>where
F: CircuitField,
Source§fn constrain_as_committed_public_input(
&self,
layouter: &mut impl Layouter<F>,
assigned: &AssignedNative<F>,
) -> Result<(), Error>
fn constrain_as_committed_public_input( &self, layouter: &mut impl Layouter<F>, assigned: &AssignedNative<F>, ) -> Result<(), Error>
Constrains the given assigned value as a public input that will be
provided in committed form.
Source§impl<F: CircuitField> ComposableChip<F> for NativeChip<F>
impl<F: CircuitField> ComposableChip<F> for NativeChip<F>
Source§fn new(config: &NativeConfig, _sub_chips: &()) -> Self
fn new(config: &NativeConfig, _sub_chips: &()) -> Self
Creates a new NativeChip given the corresponding configuration.
Source§fn configure(
meta: &mut ConstraintSystem<F>,
shared_res: &Self::SharedResources,
) -> NativeConfig
fn configure( meta: &mut ConstraintSystem<F>, shared_res: &Self::SharedResources, ) -> NativeConfig
Creates a NativeConfig given a constraint system and a set of available advice columns and fixed columns.
Resources that can be used by other chips or gadgets,
typically sub-chip configurations and columns.
Source§type InstructionDeps = ()
type InstructionDeps = ()
Instruction set dependencies of the chip.
This chip will need to be provided with subchips that implement these
instructions.
Source§impl<F> ControlFlowInstructions<F, AssignedBit<F>> for NativeChip<F>where
F: CircuitField,
impl<F> ControlFlowInstructions<F, AssignedBit<F>> for NativeChip<F>where
F: CircuitField,
Source§fn select(
&self,
layouter: &mut impl Layouter<F>,
cond: &AssignedBit<F>,
x: &AssignedBit<F>,
y: &AssignedBit<F>,
) -> Result<AssignedBit<F>, Error>
fn select( &self, layouter: &mut impl Layouter<F>, cond: &AssignedBit<F>, x: &AssignedBit<F>, y: &AssignedBit<F>, ) -> Result<AssignedBit<F>, Error>
Source§fn cond_swap(
&self,
layouter: &mut impl Layouter<F>,
cond: &AssignedBit<F>,
x: &AssignedBit<F>,
y: &AssignedBit<F>,
) -> Result<(AssignedBit<F>, AssignedBit<F>), Error>
fn cond_swap( &self, layouter: &mut impl Layouter<F>, cond: &AssignedBit<F>, x: &AssignedBit<F>, y: &AssignedBit<F>, ) -> Result<(AssignedBit<F>, AssignedBit<F>), Error>
Swaps two elements
x and y only if cond is set to 1.Source§fn cond_assert_equal(
&self,
layouter: &mut impl Layouter<F>,
cond: &AssignedBit<F>,
x: &Assigned,
y: &Assigned,
) -> Result<(), Error>
fn cond_assert_equal( &self, layouter: &mut impl Layouter<F>, cond: &AssignedBit<F>, x: &Assigned, y: &Assigned, ) -> Result<(), Error>
Equality assertion only if
cond is set to 1.Source§impl<F> ControlFlowInstructions<F, AssignedCell<F, F>> for NativeChip<F>
impl<F> ControlFlowInstructions<F, AssignedCell<F, F>> for NativeChip<F>
Source§fn select(
&self,
layouter: &mut impl Layouter<F>,
cond: &AssignedBit<F>,
x: &AssignedNative<F>,
y: &AssignedNative<F>,
) -> Result<AssignedNative<F>, Error>
fn select( &self, layouter: &mut impl Layouter<F>, cond: &AssignedBit<F>, x: &AssignedNative<F>, y: &AssignedNative<F>, ) -> Result<AssignedNative<F>, Error>
Source§fn cond_swap(
&self,
layouter: &mut impl Layouter<F>,
cond: &AssignedBit<F>,
x: &AssignedNative<F>,
y: &AssignedNative<F>,
) -> Result<(AssignedNative<F>, AssignedNative<F>), Error>
fn cond_swap( &self, layouter: &mut impl Layouter<F>, cond: &AssignedBit<F>, x: &AssignedNative<F>, y: &AssignedNative<F>, ) -> Result<(AssignedNative<F>, AssignedNative<F>), Error>
Swaps two elements
x and y only if cond is set to 1.Source§fn cond_assert_equal(
&self,
layouter: &mut impl Layouter<F>,
cond: &AssignedBit<F>,
x: &Assigned,
y: &Assigned,
) -> Result<(), Error>
fn cond_assert_equal( &self, layouter: &mut impl Layouter<F>, cond: &AssignedBit<F>, x: &Assigned, y: &Assigned, ) -> Result<(), Error>
Equality assertion only if
cond is set to 1.Source§impl<F> ConversionInstructions<F, AssignedBit<F>, AssignedCell<F, F>> for NativeChip<F>where
F: CircuitField,
impl<F> ConversionInstructions<F, AssignedBit<F>, AssignedCell<F, F>> for NativeChip<F>where
F: CircuitField,
Source§fn convert_value(&self, x: &bool) -> Option<F>
fn convert_value(&self, x: &bool) -> Option<F>
Converts an AssignedSource::Element into an AssignedTarget::Element,
returns
None if the conversion failed.Source§fn convert(
&self,
_layouter: &mut impl Layouter<F>,
bit: &AssignedBit<F>,
) -> Result<AssignedNative<F>, Error>
fn convert( &self, _layouter: &mut impl Layouter<F>, bit: &AssignedBit<F>, ) -> Result<AssignedNative<F>, Error>
Converts an AssignedSource into an AssignedTarget. Read more
Source§impl<F> ConversionInstructions<F, AssignedCell<F, F>, AssignedBit<F>> for NativeChip<F>where
F: CircuitField,
impl<F> ConversionInstructions<F, AssignedCell<F, F>, AssignedBit<F>> for NativeChip<F>where
F: CircuitField,
Source§fn convert_value(&self, x: &F) -> Option<bool>
fn convert_value(&self, x: &F) -> Option<bool>
Converts an AssignedSource::Element into an AssignedTarget::Element,
returns
None if the conversion failed.Source§fn convert(
&self,
layouter: &mut impl Layouter<F>,
x: &AssignedNative<F>,
) -> Result<AssignedBit<F>, Error>
fn convert( &self, layouter: &mut impl Layouter<F>, x: &AssignedNative<F>, ) -> Result<AssignedBit<F>, Error>
Converts an AssignedSource into an AssignedTarget. Read more
Source§impl<F: Debug + CircuitField> Debug for NativeChip<F>
impl<F: Debug + CircuitField> Debug for NativeChip<F>
Source§impl<F> EqualityInstructions<F, AssignedBit<F>> for NativeChip<F>
impl<F> EqualityInstructions<F, AssignedBit<F>> for NativeChip<F>
Source§fn is_equal(
&self,
layouter: &mut impl Layouter<F>,
a: &AssignedBit<F>,
b: &AssignedBit<F>,
) -> Result<AssignedBit<F>, Error>
fn is_equal( &self, layouter: &mut impl Layouter<F>, a: &AssignedBit<F>, b: &AssignedBit<F>, ) -> Result<AssignedBit<F>, Error>
Source§fn is_not_equal(
&self,
layouter: &mut impl Layouter<F>,
a: &AssignedBit<F>,
b: &AssignedBit<F>,
) -> Result<AssignedBit<F>, Error>
fn is_not_equal( &self, layouter: &mut impl Layouter<F>, a: &AssignedBit<F>, b: &AssignedBit<F>, ) -> Result<AssignedBit<F>, Error>
Returns
0 if the elements are equal, returns 1 otherwise.Source§fn is_equal_to_fixed(
&self,
layouter: &mut impl Layouter<F>,
b: &AssignedBit<F>,
constant: bool,
) -> Result<AssignedBit<F>, Error>
fn is_equal_to_fixed( &self, layouter: &mut impl Layouter<F>, b: &AssignedBit<F>, constant: bool, ) -> Result<AssignedBit<F>, Error>
Returns
1 iff the given element equals the given constant. Read moreSource§fn is_not_equal_to_fixed(
&self,
layouter: &mut impl Layouter<F>,
b: &AssignedBit<F>,
constant: bool,
) -> Result<AssignedBit<F>, Error>
fn is_not_equal_to_fixed( &self, layouter: &mut impl Layouter<F>, b: &AssignedBit<F>, constant: bool, ) -> Result<AssignedBit<F>, Error>
Returns
1 iff the given element is not equal to the given constant.Source§impl<F> EqualityInstructions<F, AssignedCell<F, F>> for NativeChip<F>
impl<F> EqualityInstructions<F, AssignedCell<F, F>> for NativeChip<F>
Source§fn is_equal(
&self,
layouter: &mut impl Layouter<F>,
x: &AssignedNative<F>,
y: &AssignedNative<F>,
) -> Result<AssignedBit<F>, Error>
fn is_equal( &self, layouter: &mut impl Layouter<F>, x: &AssignedNative<F>, y: &AssignedNative<F>, ) -> Result<AssignedBit<F>, Error>
Source§fn is_not_equal(
&self,
layouter: &mut impl Layouter<F>,
x: &AssignedNative<F>,
y: &AssignedNative<F>,
) -> Result<AssignedBit<F>, Error>
fn is_not_equal( &self, layouter: &mut impl Layouter<F>, x: &AssignedNative<F>, y: &AssignedNative<F>, ) -> Result<AssignedBit<F>, Error>
Returns
0 if the elements are equal, returns 1 otherwise.Source§fn is_equal_to_fixed(
&self,
layouter: &mut impl Layouter<F>,
x: &AssignedNative<F>,
c: F,
) -> Result<AssignedBit<F>, Error>
fn is_equal_to_fixed( &self, layouter: &mut impl Layouter<F>, x: &AssignedNative<F>, c: F, ) -> Result<AssignedBit<F>, Error>
Returns
1 iff the given element equals the given constant. Read moreSource§fn is_not_equal_to_fixed(
&self,
layouter: &mut impl Layouter<F>,
x: &AssignedNative<F>,
c: F,
) -> Result<AssignedBit<F>, Error>
fn is_not_equal_to_fixed( &self, layouter: &mut impl Layouter<F>, x: &AssignedNative<F>, c: F, ) -> Result<AssignedBit<F>, Error>
Returns
1 iff the given element is not equal to the given constant.Source§impl<F> FieldInstructions<F, AssignedCell<F, F>> for NativeChip<F>where
F: CircuitField,
impl<F> FieldInstructions<F, AssignedCell<F, F>> for NativeChip<F>where
F: CircuitField,
Source§impl<F> PublicInputInstructions<F, AssignedBit<F>> for NativeChip<F>where
F: CircuitField,
impl<F> PublicInputInstructions<F, AssignedBit<F>> for NativeChip<F>where
F: CircuitField,
Source§fn as_public_input(
&self,
_layouter: &mut impl Layouter<F>,
assigned: &AssignedBit<F>,
) -> Result<Vec<AssignedNative<F>>, Error>
fn as_public_input( &self, _layouter: &mut impl Layouter<F>, assigned: &AssignedBit<F>, ) -> Result<Vec<AssignedNative<F>>, Error>
Returns the cells associated with the given assigned value with the same
format as a public input. This function is the in-circuit analog of
Instantiable::as_public_input.
Source§fn constrain_as_public_input(
&self,
layouter: &mut impl Layouter<F>,
assigned: &AssignedBit<F>,
) -> Result<(), Error>
fn constrain_as_public_input( &self, layouter: &mut impl Layouter<F>, assigned: &AssignedBit<F>, ) -> Result<(), Error>
Constrains the given assigned value as a public input to the circuit. Read more
Source§fn assign_as_public_input(
&self,
layouter: &mut impl Layouter<F>,
value: Value<bool>,
) -> Result<AssignedBit<F>, Error>
fn assign_as_public_input( &self, layouter: &mut impl Layouter<F>, value: Value<bool>, ) -> Result<AssignedBit<F>, Error>
Source§impl<F> PublicInputInstructions<F, AssignedCell<F, F>> for NativeChip<F>where
F: CircuitField,
impl<F> PublicInputInstructions<F, AssignedCell<F, F>> for NativeChip<F>where
F: CircuitField,
Source§fn as_public_input(
&self,
_layouter: &mut impl Layouter<F>,
assigned: &AssignedNative<F>,
) -> Result<Vec<AssignedNative<F>>, Error>
fn as_public_input( &self, _layouter: &mut impl Layouter<F>, assigned: &AssignedNative<F>, ) -> Result<Vec<AssignedNative<F>>, Error>
Returns the cells associated with the given assigned value with the same
format as a public input. This function is the in-circuit analog of
Instantiable::as_public_input.
Source§fn constrain_as_public_input(
&self,
layouter: &mut impl Layouter<F>,
assigned: &AssignedNative<F>,
) -> Result<(), Error>
fn constrain_as_public_input( &self, layouter: &mut impl Layouter<F>, assigned: &AssignedNative<F>, ) -> Result<(), Error>
Constrains the given assigned value as a public input to the circuit. Read more
Source§fn assign_as_public_input(
&self,
layouter: &mut impl Layouter<F>,
value: Value<F>,
) -> Result<AssignedNative<F>, Error>
fn assign_as_public_input( &self, layouter: &mut impl Layouter<F>, value: Value<F>, ) -> Result<AssignedNative<F>, Error>
Source§impl<F> UnsafeConversionInstructions<F, AssignedCell<F, F>, AssignedBit<F>> for NativeChip<F>where
F: CircuitField,
impl<F> UnsafeConversionInstructions<F, AssignedCell<F, F>, AssignedBit<F>> for NativeChip<F>where
F: CircuitField,
Source§fn convert_unsafe(
&self,
_layouter: &mut impl Layouter<F>,
x: &AssignedNative<F>,
) -> Result<AssignedBit<F>, Error>
fn convert_unsafe( &self, _layouter: &mut impl Layouter<F>, x: &AssignedNative<F>, ) -> Result<AssignedBit<F>, Error>
CAUTION: use only if you know what you are doing!
This function converts an AssignedNative to an AssignedBit
without adding any constraints to guarantee the “bitness” of the
assigned value.
It should be used only when the input x is already guaranteed to be a bit
Source§impl<F> ZeroInstructions<F, AssignedCell<F, F>> for NativeChip<F>where
F: CircuitField,
impl<F> ZeroInstructions<F, AssignedCell<F, F>> for NativeChip<F>where
F: CircuitField,
Source§fn assert_zero(
&self,
layouter: &mut impl Layouter<F>,
x: &Assigned,
) -> Result<(), Error>
fn assert_zero( &self, layouter: &mut impl Layouter<F>, x: &Assigned, ) -> Result<(), Error>
Enforces that the given assigned element is zero. Read more
Auto Trait Implementations§
impl<F> Freeze for NativeChip<F>
impl<F> !RefUnwindSafe for NativeChip<F>
impl<F> !Send for NativeChip<F>
impl<F> !Sync for NativeChip<F>
impl<F> Unpin for NativeChip<F>
impl<F> UnsafeUnpin for NativeChip<F>
impl<F> !UnwindSafe for NativeChip<F>
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
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<T> FmtForward for T
impl<T> FmtForward for T
Source§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes
self to use its Binary implementation when Debug-formatted.Source§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes
self to use its Display implementation when
Debug-formatted.Source§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
Causes
self to use its LowerExp implementation when
Debug-formatted.Source§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
Causes
self to use its LowerHex implementation when
Debug-formatted.Source§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
Causes
self to use its Octal implementation when Debug-formatted.Source§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
Causes
self to use its Pointer implementation when
Debug-formatted.Source§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
Causes
self to use its UpperExp implementation when
Debug-formatted.Source§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
Causes
self to use its UpperHex implementation when
Debug-formatted.Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
Converts
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
Source§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Pipes by value. This is generally the method you want to use. Read more
Source§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
Borrows
self and passes that borrow into the pipe function. Read moreSource§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
Mutably borrows
self and passes that borrow into the pipe function. Read moreSource§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
Source§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
Source§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
Borrows
self, then passes self.as_ref() into the pipe function.Source§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
Mutably borrows
self, then passes self.as_mut() into the pipe
function.Source§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
Borrows
self, then passes self.deref() into the pipe function.Source§impl<T> Pointable for T
impl<T> Pointable for T
Source§impl<T> Tap for T
impl<T> Tap for T
Source§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Immutable access to the
Borrow<B> of a value. Read moreSource§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
Mutable access to the
BorrowMut<B> of a value. Read moreSource§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
Immutable access to the
AsRef<R> view of a value. Read moreSource§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
Mutable access to the
AsMut<R> view of a value. Read moreSource§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Immutable access to the
Deref::Target of a value. Read moreSource§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Mutable access to the
Deref::Target of a value. Read moreSource§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
Calls
.tap() only in debug builds, and is erased in release builds.Source§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
Calls
.tap_mut() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
Calls
.tap_borrow() only in debug builds, and is erased in release
builds.Source§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
Calls
.tap_borrow_mut() only in debug builds, and is erased in release
builds.Source§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
Calls
.tap_ref() only in debug builds, and is erased in release
builds.Source§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
Calls
.tap_ref_mut() only in debug builds, and is erased in release
builds.Source§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
Calls
.tap_deref() only in debug builds, and is erased in release
builds.