pub trait PolynomialSpace: Copy {
type Val: Field;
// Required methods
fn size(&self) -> usize;
fn first_point(&self) -> Self::Val;
fn next_point<Ext: ExtensionField<Self::Val>>(&self, x: Ext) -> Option<Ext>;
fn create_disjoint_domain(&self, min_size: usize) -> Self;
fn split_domains(&self, num_chunks: usize) -> Vec<Self>;
fn split_evals(
&self,
num_chunks: usize,
evals: RowMajorMatrix<Self::Val>,
) -> Vec<RowMajorMatrix<Self::Val>>;
fn zp_at_point<Ext: ExtensionField<Self::Val>>(&self, point: Ext) -> Ext;
fn selectors_at_point<Ext: ExtensionField<Self::Val>>(
&self,
point: Ext,
) -> LagrangeSelectors<Ext>;
fn selectors_on_coset(
&self,
coset: Self,
) -> LagrangeSelectors<Vec<Self::Val>>;
}
Required Associated Types§
Required Methods§
fn size(&self) -> usize
fn first_point(&self) -> Self::Val
fn next_point<Ext: ExtensionField<Self::Val>>(&self, x: Ext) -> Option<Ext>
fn create_disjoint_domain(&self, min_size: usize) -> Self
Sourcefn split_domains(&self, num_chunks: usize) -> Vec<Self>
fn split_domains(&self, num_chunks: usize) -> Vec<Self>
Split this domain into num_chunks
even chunks.
num_chunks
is assumed to be a power of two.
fn split_evals( &self, num_chunks: usize, evals: RowMajorMatrix<Self::Val>, ) -> Vec<RowMajorMatrix<Self::Val>>
fn zp_at_point<Ext: ExtensionField<Self::Val>>(&self, point: Ext) -> Ext
fn selectors_at_point<Ext: ExtensionField<Self::Val>>( &self, point: Ext, ) -> LagrangeSelectors<Ext>
fn selectors_on_coset(&self, coset: Self) -> LagrangeSelectors<Vec<Self::Val>>
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.