openvm_stark_sdk/dummy_airs/fib_air/
columns.rs
1use core::borrow::Borrow;
2
3pub const NUM_FIBONACCI_COLS: usize = 2;
4
5#[repr(C)]
6pub struct FibonacciCols<F> {
7 pub left: F,
8 pub right: F,
9}
10
11impl<F> FibonacciCols<F> {
12 pub const fn new(left: F, right: F) -> FibonacciCols<F> {
13 FibonacciCols { left, right }
14 }
15}
16
17impl<F> Borrow<FibonacciCols<F>> for [F] {
19 fn borrow(&self) -> &FibonacciCols<F> {
20 debug_assert_eq!(self.len(), NUM_FIBONACCI_COLS);
21 let (prefix, shorts, suffix) = unsafe { self.align_to::<FibonacciCols<F>>() };
22 debug_assert!(prefix.is_empty(), "Alignment should match");
23 debug_assert!(suffix.is_empty(), "Alignment should match");
24 debug_assert_eq!(shorts.len(), 1);
25 &shorts[0]
26 }
27}