use crate::tensor::TensorBase;
use crate::{ArcTensor, Tensor, TensorView, TensorViewMut};
use ndarray::{Data, DataMut, Dimension, RawData};
impl<A, S, D> TensorBase<S, D>
where
D: Dimension,
S: RawData<Elem = A>,
{
pub fn to_owned(&self) -> Tensor<A, D>
where
A: Clone,
S: Data,
{
TensorBase {
store: self.store().to_owned(),
}
}
pub fn to_shared(&self) -> ArcTensor<A, D>
where
A: Clone,
S: Data,
{
TensorBase {
store: self.store().to_shared(),
}
}
pub fn view(&self) -> TensorView<'_, A, D>
where
S: Data,
{
TensorBase {
store: self.store().view(),
}
}
pub fn view_mut(&mut self) -> TensorViewMut<'_, A, D>
where
S: DataMut,
{
TensorBase {
store: self.store_mut().view_mut(),
}
}
}