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}