Skip to main content

slop_basefold/
code.rs

1use derive_where::derive_where;
2use slop_algebra::AbstractField;
3use slop_alloc::{Backend, CpuBackend, HasBackend};
4use slop_tensor::Tensor;
5use std::borrow::{Borrow, BorrowMut};
6
7#[derive(Debug, Clone)]
8#[derive_where(PartialEq, Eq, Serialize, Deserialize; Tensor<F, A>)]
9pub struct RsCodeWord<F, A: Backend = CpuBackend> {
10    pub data: Tensor<F, A>,
11}
12
13impl<F: AbstractField, A: Backend> RsCodeWord<F, A> {
14    pub const fn new(data: Tensor<F, A>) -> Self {
15        Self { data }
16    }
17}
18
19impl<F: AbstractField, A: Backend> Borrow<Tensor<F, A>> for RsCodeWord<F, A> {
20    fn borrow(&self) -> &Tensor<F, A> {
21        &self.data
22    }
23}
24
25impl<F: AbstractField, A: Backend> BorrowMut<Tensor<F, A>> for RsCodeWord<F, A> {
26    fn borrow_mut(&mut self) -> &mut Tensor<F, A> {
27        &mut self.data
28    }
29}
30
31impl<F, A: Backend> HasBackend for RsCodeWord<F, A> {
32    type Backend = A;
33
34    #[inline]
35    fn backend(&self) -> &Self::Backend {
36        self.data.backend()
37    }
38}