pub enum PolishToken<F, Column, ChallengeTerm> {
Show 14 variants
Constant(ConstantTerm<F>),
Challenge(ChallengeTerm),
Cell(Variable<Column>),
Dup,
Pow(u64),
Add,
Mul,
Sub,
VanishesOnZeroKnowledgeAndPreviousRows,
UnnormalizedLagrangeBasis(RowOffset),
Store,
Load(usize),
SkipIf(FeatureFlag, usize),
SkipIfNot(FeatureFlag, usize),
}
Expand description
For efficiency of evaluation, we compile expressions to reverse Polish notation expressions, which are vectors of the below tokens.
Variants§
Constant(ConstantTerm<F>)
Challenge(ChallengeTerm)
Cell(Variable<Column>)
Dup
Pow(u64)
Add
Mul
Sub
VanishesOnZeroKnowledgeAndPreviousRows
UnnormalizedLagrangeBasis(RowOffset)
Store
Load(usize)
SkipIf(FeatureFlag, usize)
Skip the given number of tokens if the feature is enabled.
SkipIfNot(FeatureFlag, usize)
Skip the given number of tokens if the feature is disabled.
Implementations§
Source§impl<F: FftField, Column: Copy, ChallengeTerm: Copy> PolishToken<F, Column, ChallengeTerm>
impl<F: FftField, Column: Copy, ChallengeTerm: Copy> PolishToken<F, Column, ChallengeTerm>
Sourcepub fn evaluate<Evaluations: ColumnEvaluations<F, Column = Column>>(
toks: &[PolishToken<F, Column, ChallengeTerm>],
d: D<F>,
pt: F,
evals: &Evaluations,
c: &Constants<F>,
chals: &dyn Index<ChallengeTerm, Output = F>,
) -> Result<F, ExprError<Column>>
pub fn evaluate<Evaluations: ColumnEvaluations<F, Column = Column>>( toks: &[PolishToken<F, Column, ChallengeTerm>], d: D<F>, pt: F, evals: &Evaluations, c: &Constants<F>, chals: &dyn Index<ChallengeTerm, Output = F>, ) -> Result<F, ExprError<Column>>
Evaluate an RPN expression to a field element.
Trait Implementations§
Source§impl<F: Clone, Column: Clone, ChallengeTerm: Clone> Clone for PolishToken<F, Column, ChallengeTerm>
impl<F: Clone, Column: Clone, ChallengeTerm: Clone> Clone for PolishToken<F, Column, ChallengeTerm>
Source§fn clone(&self) -> PolishToken<F, Column, ChallengeTerm>
fn clone(&self) -> PolishToken<F, Column, ChallengeTerm>
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: Debug, Column: Debug, ChallengeTerm: Debug> Debug for PolishToken<F, Column, ChallengeTerm>
impl<F: Debug, Column: Debug, ChallengeTerm: Debug> Debug for PolishToken<F, Column, ChallengeTerm>
Source§impl<'de, F, Column, ChallengeTerm> Deserialize<'de> for PolishToken<F, Column, ChallengeTerm>
impl<'de, F, Column, ChallengeTerm> Deserialize<'de> for PolishToken<F, Column, ChallengeTerm>
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl<F: PartialEq, Column: PartialEq, ChallengeTerm: PartialEq> PartialEq for PolishToken<F, Column, ChallengeTerm>
impl<F: PartialEq, Column: PartialEq, ChallengeTerm: PartialEq> PartialEq for PolishToken<F, Column, ChallengeTerm>
Source§fn eq(&self, other: &PolishToken<F, Column, ChallengeTerm>) -> bool
fn eq(&self, other: &PolishToken<F, Column, ChallengeTerm>) -> bool
Tests for
self
and other
values to be equal, and is used by ==
.Source§impl<F, Column, ChallengeTerm> Serialize for PolishToken<F, Column, ChallengeTerm>
impl<F, Column, ChallengeTerm> Serialize for PolishToken<F, Column, ChallengeTerm>
impl<F: Eq, Column: Eq, ChallengeTerm: Eq> Eq for PolishToken<F, Column, ChallengeTerm>
impl<F, Column, ChallengeTerm> StructuralPartialEq for PolishToken<F, Column, ChallengeTerm>
Auto Trait Implementations§
impl<F, Column, ChallengeTerm> Freeze for PolishToken<F, Column, ChallengeTerm>
impl<F, Column, ChallengeTerm> RefUnwindSafe for PolishToken<F, Column, ChallengeTerm>
impl<F, Column, ChallengeTerm> Send for PolishToken<F, Column, ChallengeTerm>
impl<F, Column, ChallengeTerm> Sync for PolishToken<F, Column, ChallengeTerm>
impl<F, Column, ChallengeTerm> Unpin for PolishToken<F, Column, ChallengeTerm>
impl<F, Column, ChallengeTerm> UnwindSafe for PolishToken<F, Column, ChallengeTerm>
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,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Checks if this value is equivalent to the given key. Read more