pub trait IntegerInstructions<F: PrimeField>: Clone + Debug {
type Context: Debug;
type AssignedCell: Clone + Debug;
type AssignedInteger: Clone + Debug;
// Required methods
fn assign_integer(
&self,
ctx: &mut Self::Context,
integer: F,
) -> Self::AssignedInteger;
fn assign_constant(
&self,
ctx: &mut Self::Context,
integer: F,
) -> Self::AssignedInteger;
fn sum_with_coeff_and_const(
&self,
ctx: &mut Self::Context,
values: &[(F, impl Deref<Target = Self::AssignedInteger>)],
constant: F,
) -> Self::AssignedInteger;
fn sum_products_with_coeff_and_const(
&self,
ctx: &mut Self::Context,
values: &[(F, impl Deref<Target = Self::AssignedInteger>, impl Deref<Target = Self::AssignedInteger>)],
constant: F,
) -> Self::AssignedInteger;
fn sub(
&self,
ctx: &mut Self::Context,
lhs: &Self::AssignedInteger,
rhs: &Self::AssignedInteger,
) -> Self::AssignedInteger;
fn neg(
&self,
ctx: &mut Self::Context,
value: &Self::AssignedInteger,
) -> Self::AssignedInteger;
fn invert(
&self,
ctx: &mut Self::Context,
value: &Self::AssignedInteger,
) -> Self::AssignedInteger;
fn assert_equal(
&self,
ctx: &mut Self::Context,
lhs: &Self::AssignedInteger,
rhs: &Self::AssignedInteger,
);
fn pow_var(
&self,
ctx: &mut Self::Context,
base: &Self::AssignedInteger,
exponent: &Self::AssignedInteger,
max_bits: usize,
) -> Self::AssignedInteger;
}
Expand description
Instructions to handle field element operations.
Required Associated Types§
Sourcetype AssignedCell: Clone + Debug
type AssignedCell: Clone + Debug
Assigned cell.
Sourcetype AssignedInteger: Clone + Debug
type AssignedInteger: Clone + Debug
Assigned integer.
Required Methods§
Sourcefn assign_integer(
&self,
ctx: &mut Self::Context,
integer: F,
) -> Self::AssignedInteger
fn assign_integer( &self, ctx: &mut Self::Context, integer: F, ) -> Self::AssignedInteger
Assign an integer witness.
Sourcefn assign_constant(
&self,
ctx: &mut Self::Context,
integer: F,
) -> Self::AssignedInteger
fn assign_constant( &self, ctx: &mut Self::Context, integer: F, ) -> Self::AssignedInteger
Assign an integer constant.
Sourcefn sum_with_coeff_and_const(
&self,
ctx: &mut Self::Context,
values: &[(F, impl Deref<Target = Self::AssignedInteger>)],
constant: F,
) -> Self::AssignedInteger
fn sum_with_coeff_and_const( &self, ctx: &mut Self::Context, values: &[(F, impl Deref<Target = Self::AssignedInteger>)], constant: F, ) -> Self::AssignedInteger
Sum integers with coefficients and constant.
Sourcefn sum_products_with_coeff_and_const(
&self,
ctx: &mut Self::Context,
values: &[(F, impl Deref<Target = Self::AssignedInteger>, impl Deref<Target = Self::AssignedInteger>)],
constant: F,
) -> Self::AssignedInteger
fn sum_products_with_coeff_and_const( &self, ctx: &mut Self::Context, values: &[(F, impl Deref<Target = Self::AssignedInteger>, impl Deref<Target = Self::AssignedInteger>)], constant: F, ) -> Self::AssignedInteger
Sum product of integers with coefficients and constant.
Sourcefn sub(
&self,
ctx: &mut Self::Context,
lhs: &Self::AssignedInteger,
rhs: &Self::AssignedInteger,
) -> Self::AssignedInteger
fn sub( &self, ctx: &mut Self::Context, lhs: &Self::AssignedInteger, rhs: &Self::AssignedInteger, ) -> Self::AssignedInteger
Returns lhs - rhs
.
Sourcefn neg(
&self,
ctx: &mut Self::Context,
value: &Self::AssignedInteger,
) -> Self::AssignedInteger
fn neg( &self, ctx: &mut Self::Context, value: &Self::AssignedInteger, ) -> Self::AssignedInteger
Returns -value
.
Sourcefn invert(
&self,
ctx: &mut Self::Context,
value: &Self::AssignedInteger,
) -> Self::AssignedInteger
fn invert( &self, ctx: &mut Self::Context, value: &Self::AssignedInteger, ) -> Self::AssignedInteger
Returns 1/value
.
Sourcefn assert_equal(
&self,
ctx: &mut Self::Context,
lhs: &Self::AssignedInteger,
rhs: &Self::AssignedInteger,
)
fn assert_equal( &self, ctx: &mut Self::Context, lhs: &Self::AssignedInteger, rhs: &Self::AssignedInteger, )
Enforce lhs
and rhs
are equal.
Sourcefn pow_var(
&self,
ctx: &mut Self::Context,
base: &Self::AssignedInteger,
exponent: &Self::AssignedInteger,
max_bits: usize,
) -> Self::AssignedInteger
fn pow_var( &self, ctx: &mut Self::Context, base: &Self::AssignedInteger, exponent: &Self::AssignedInteger, max_bits: usize, ) -> Self::AssignedInteger
Returns base^exponent
and constrains that exponent
has at most max_bits
bits.
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.