sp1_recursion_core/air/
extension.rs

1use p3_field::{
2    extension::{BinomialExtensionField, BinomiallyExtendable},
3    AbstractExtensionField, Field,
4};
5use sp1_stark::air::BinomialExtension;
6
7use super::Block;
8
9use crate::runtime::D;
10
11pub trait BinomialExtensionUtils<T> {
12    fn from_block(block: Block<T>) -> Self;
13
14    fn as_block(&self) -> Block<T>;
15}
16
17impl<T: Clone> BinomialExtensionUtils<T> for BinomialExtension<T> {
18    fn from_block(block: Block<T>) -> Self {
19        Self(block.0)
20    }
21
22    fn as_block(&self) -> Block<T> {
23        Block(self.0.clone())
24    }
25}
26
27impl<AF> BinomialExtensionUtils<AF> for BinomialExtensionField<AF, D>
28where
29    AF: Field,
30    AF::F: BinomiallyExtendable<D>,
31{
32    fn from_block(block: Block<AF>) -> Self {
33        Self::from_base_slice(&block.0)
34    }
35
36    fn as_block(&self) -> Block<AF> {
37        Block(self.as_base_slice().try_into().unwrap())
38    }
39}