pub trait CircuitConfig: Config {
type Bit: Copy + Variable<Self>;
Show 16 methods
// Required methods
fn read_bit(builder: &mut Builder<Self>) -> Self::Bit;
fn read_felt(builder: &mut Builder<Self>) -> Felt<SP1Field>;
fn read_ext(builder: &mut Builder<Self>) -> Ext<SP1Field, SP1ExtensionField>;
fn assert_bit_zero(builder: &mut Builder<Self>, bit: Self::Bit);
fn assert_bit_one(builder: &mut Builder<Self>, bit: Self::Bit);
fn ext2felt(
builder: &mut Builder<Self>,
ext: Ext<SP1Field, SP1ExtensionField>,
) -> [Felt<SP1Field>; 4];
fn felt2ext(
builder: &mut Builder<Self>,
felt: [Felt<SP1Field>; 4],
) -> Ext<SP1Field, SP1ExtensionField>;
fn exp_reverse_bits(
builder: &mut Builder<Self>,
input: Felt<SP1Field>,
power_bits: Vec<Self::Bit>,
) -> Felt<SP1Field>;
fn prefix_sum_checks(
builder: &mut Builder<Self>,
x1: Vec<Felt<SP1Field>>,
x2: Vec<Ext<SP1Field, SP1ExtensionField>>,
) -> (Ext<SP1Field, SP1ExtensionField>, Felt<SP1Field>);
fn num2bits(
builder: &mut Builder<Self>,
num: Felt<SP1Field>,
num_bits: usize,
) -> Vec<Self::Bit>;
fn bits2num(
builder: &mut Builder<Self>,
bits: impl IntoIterator<Item = Self::Bit>,
) -> Felt<SP1Field>;
fn select_chain_f(
builder: &mut Builder<Self>,
should_swap: Self::Bit,
first: impl IntoIterator<Item = Felt<SP1Field>> + Clone,
second: impl IntoIterator<Item = Felt<SP1Field>> + Clone,
) -> Vec<Felt<SP1Field>>;
fn select_chain_ef(
builder: &mut Builder<Self>,
should_swap: Self::Bit,
first: impl IntoIterator<Item = Ext<SP1Field, SP1ExtensionField>> + Clone,
second: impl IntoIterator<Item = Ext<SP1Field, SP1ExtensionField>> + Clone,
) -> Vec<Ext<SP1Field, SP1ExtensionField>>;
fn poseidon2_permute_v2(
builder: &mut Builder<Self>,
input: [Felt<SP1Field>; 16],
) -> [Felt<SP1Field>; 16];
// Provided methods
fn range_check_felt(
builder: &mut Builder<Self>,
value: Felt<SP1Field>,
num_bits: usize,
) { ... }
fn poseidon2_compress_v2(
builder: &mut Builder<Self>,
input: impl IntoIterator<Item = Felt<SP1Field>>,
) -> [Felt<SP1Field>; 8] { ... }
}Required Associated Types§
Required Methods§
fn read_bit(builder: &mut Builder<Self>) -> Self::Bit
fn read_felt(builder: &mut Builder<Self>) -> Felt<SP1Field>
fn read_ext(builder: &mut Builder<Self>) -> Ext<SP1Field, SP1ExtensionField>
fn assert_bit_zero(builder: &mut Builder<Self>, bit: Self::Bit)
fn assert_bit_one(builder: &mut Builder<Self>, bit: Self::Bit)
fn ext2felt( builder: &mut Builder<Self>, ext: Ext<SP1Field, SP1ExtensionField>, ) -> [Felt<SP1Field>; 4]
fn felt2ext( builder: &mut Builder<Self>, felt: [Felt<SP1Field>; 4], ) -> Ext<SP1Field, SP1ExtensionField>
fn exp_reverse_bits( builder: &mut Builder<Self>, input: Felt<SP1Field>, power_bits: Vec<Self::Bit>, ) -> Felt<SP1Field>
fn prefix_sum_checks( builder: &mut Builder<Self>, x1: Vec<Felt<SP1Field>>, x2: Vec<Ext<SP1Field, SP1ExtensionField>>, ) -> (Ext<SP1Field, SP1ExtensionField>, Felt<SP1Field>)
fn num2bits( builder: &mut Builder<Self>, num: Felt<SP1Field>, num_bits: usize, ) -> Vec<Self::Bit>
fn bits2num( builder: &mut Builder<Self>, bits: impl IntoIterator<Item = Self::Bit>, ) -> Felt<SP1Field>
fn select_chain_f( builder: &mut Builder<Self>, should_swap: Self::Bit, first: impl IntoIterator<Item = Felt<SP1Field>> + Clone, second: impl IntoIterator<Item = Felt<SP1Field>> + Clone, ) -> Vec<Felt<SP1Field>>
fn select_chain_ef( builder: &mut Builder<Self>, should_swap: Self::Bit, first: impl IntoIterator<Item = Ext<SP1Field, SP1ExtensionField>> + Clone, second: impl IntoIterator<Item = Ext<SP1Field, SP1ExtensionField>> + Clone, ) -> Vec<Ext<SP1Field, SP1ExtensionField>>
fn poseidon2_permute_v2( builder: &mut Builder<Self>, input: [Felt<SP1Field>; 16], ) -> [Felt<SP1Field>; 16]
Provided Methods§
fn range_check_felt( builder: &mut Builder<Self>, value: Felt<SP1Field>, num_bits: usize, )
fn poseidon2_compress_v2( builder: &mut Builder<Self>, input: impl IntoIterator<Item = Felt<SP1Field>>, ) -> [Felt<SP1Field>; 8]
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.