Trait ark_r1cs_std::select::CondSelectGadget
source · pub trait CondSelectGadget<ConstraintF: Field>where
Self: Sized + Clone,{
fn conditionally_select(
cond: &Boolean<ConstraintF>,
true_value: &Self,
false_value: &Self
) -> Result<Self, SynthesisError>;
fn conditionally_select_power_of_two_vector(
position: &[Boolean<ConstraintF>],
values: &[Self]
) -> Result<Self, SynthesisError> { ... }
}
Expand description
Generates constraints for selecting between one of two values.
Required Methods§
sourcefn conditionally_select(
cond: &Boolean<ConstraintF>,
true_value: &Self,
false_value: &Self
) -> Result<Self, SynthesisError>
fn conditionally_select(
cond: &Boolean<ConstraintF>,
true_value: &Self,
false_value: &Self
) -> Result<Self, SynthesisError>
If cond == &Boolean::TRUE
, then this returns true_value
; else,
returns false_value
.
Note
Self::conditionally_select(cond, true_value, false_value)?
can be more
succinctly written as cond.select(&true_value, &false_value)?
.
Provided Methods§
sourcefn conditionally_select_power_of_two_vector(
position: &[Boolean<ConstraintF>],
values: &[Self]
) -> Result<Self, SynthesisError>
fn conditionally_select_power_of_two_vector(
position: &[Boolean<ConstraintF>],
values: &[Self]
) -> Result<Self, SynthesisError>
Returns an element of values
whose index in represented by position
.
position
is an array of boolean that represents an unsigned integer in
big endian order.
Example
To get the 6th element of values
, convert unsigned integer 6 (0b110
)
to position = [True, True, False]
,
and call conditionally_select_power_of_two_vector(position, values)
.