pub enum KimchiConstraint<Var, Field> {
    Basic(BasicInput<Var, Field>),
    Poseidon(Vec<Vec<Var>>),
    Poseidon2(PoseidonInput<Var>),
    EcAddComplete(EcAddCompleteInput<Var>),
    EcScale(Vec<ScaleRound<Var>>),
    EcEndoscale(EcEndoscaleInput<Var>),
    EcEndoscalar(Vec<EndoscaleScalarRound<Var>>),
    RangeCheck(Vec<Vec<Var>>),
}
Expand description

A PLONK constraint (or gate) can be Basic, Poseidon, EcAddComplete, EcScale, EcEndoscale, or EcEndoscalar.

Variants§

§

Basic(BasicInput<Var, Field>)

§

Poseidon(Vec<Vec<Var>>)

§

Poseidon2(PoseidonInput<Var>)

§

EcAddComplete(EcAddCompleteInput<Var>)

§

EcScale(Vec<ScaleRound<Var>>)

§

EcEndoscale(EcEndoscaleInput<Var>)

§

EcEndoscalar(Vec<EndoscaleScalarRound<Var>>)

§

RangeCheck(Vec<Vec<Var>>)

Implementations§

source§

impl<F> KimchiConstraint<FieldVar<F>, F>where F: PrimeField,

Trait Implementations§

source§

impl<Var: Debug, Field: Debug> Debug for KimchiConstraint<Var, Field>

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result

Formats the value using the given formatter. Read more
source§

impl<'from_value_lifetime, Var, Field> FromValue<'from_value_lifetime> for KimchiConstraint<Var, Field>where BasicInput<Var, Field>: FromValue<'from_value_lifetime>, Var: FromValue<'from_value_lifetime>, Field: FromValue<'from_value_lifetime>, Vec<Vec<Var>>: FromValue<'from_value_lifetime>, PoseidonInput<Var>: FromValue<'from_value_lifetime>, EcAddCompleteInput<Var>: FromValue<'from_value_lifetime>, Vec<ScaleRound<Var>>: FromValue<'from_value_lifetime>, EcEndoscaleInput<Var>: FromValue<'from_value_lifetime>, Vec<EndoscaleScalarRound<Var>>: FromValue<'from_value_lifetime>,

source§

fn from_value(value: Value) -> Self

Convert from OCaml value
source§

impl<Var, Field> IntoValue for KimchiConstraint<Var, Field>where BasicInput<Var, Field>: IntoValue, Var: IntoValue, Field: IntoValue, Vec<Vec<Var>>: IntoValue, PoseidonInput<Var>: IntoValue, EcAddCompleteInput<Var>: IntoValue, Vec<ScaleRound<Var>>: IntoValue, EcEndoscaleInput<Var>: IntoValue, Vec<EndoscaleScalarRound<Var>>: IntoValue,

source§

fn into_value(self, gc: &Runtime) -> Value

Convert to OCaml value
source§

impl<Var, Field> OCamlBinding for KimchiConstraint<Var, Field>where Var: OCamlDesc, Field: OCamlDesc,

source§

fn ocaml_binding( env: &mut Env, rename: Option<&'static str>, new_type: bool ) -> String

will generate the OCaml bindings for a type (called root type). It takes the current environment [Env], as well as an optional name (if you wish to rename the type in OCaml).
source§

impl<Var, Field> OCamlDesc for KimchiConstraint<Var, Field>where Var: OCamlDesc, Field: OCamlDesc,

source§

fn ocaml_desc(env: &Env, generics: &[&str]) -> String

describes the type in OCaml, given the current environment [Env] and the list of generic type parameters of the root type (the type that makes use of this type)
source§

fn unique_id() -> u128

Returns a unique ID for the type. This ID will not change if concrete type parameters are used.

Auto Trait Implementations§

§

impl<Var, Field> RefUnwindSafe for KimchiConstraint<Var, Field>where Field: RefUnwindSafe, Var: RefUnwindSafe,

§

impl<Var, Field> Send for KimchiConstraint<Var, Field>where Field: Send, Var: Send,

§

impl<Var, Field> Sync for KimchiConstraint<Var, Field>where Field: Sync, Var: Sync,

§

impl<Var, Field> Unpin for KimchiConstraint<Var, Field>where Field: Unpin, Var: Unpin,

§

impl<Var, Field> UnwindSafe for KimchiConstraint<Var, Field>where Field: UnwindSafe, Var: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for Twhere T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere T: ?Sized,

source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere T: ?Sized,

source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere U: From<T>,

source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

§

impl<T> Pointable for T

§

const ALIGN: usize = mem::align_of::<T>()

The alignment of pointer.
§

type Init = T

The type for initializers.
§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
source§

impl<T> Same<T> for T

§

type Output = T

Should always be Self
source§

impl<T, U> TryFrom<U> for Twhere U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
§

impl<V, T> VZip<V> for Twhere V: MultiLane<T>,

§

fn vzip(self) -> V