use crate::math::polynomial::Polynomial;
use crate::math::tensor::{AsMutSlice, AsMutTensor, AsRefSlice, AsRefTensor, IntoTensor, Tensor};
use crate::tensor_traits;
pub struct GlweBody<Cont> {
pub(super) tensor: Tensor<Cont>,
}
tensor_traits!(GlweBody);
impl<Cont> GlweBody<Cont> {
pub fn into_polynomial(self) -> Polynomial<Cont>
where
Self: IntoTensor<Container = Cont>,
{
Polynomial::from_container(self.into_tensor().into_container())
}
pub fn as_polynomial(&self) -> Polynomial<&[<Self as AsRefTensor>::Element]>
where
Self: AsRefTensor,
{
Polynomial::from_container(self.as_tensor().as_slice())
}
pub fn as_mut_polynomial(&mut self) -> Polynomial<&mut [<Self as AsMutTensor>::Element]>
where
Self: AsMutTensor,
{
Polynomial::from_container(self.as_mut_tensor().as_mut_slice())
}
}