pub trait NDArrayTransform: NDArray + Debug {
type Broadcast: NDArray<DType = Self::DType> + NDArrayRead + NDArrayTransform;
type Expand: NDArray<DType = Self::DType> + NDArrayRead + NDArrayTransform;
type Reshape: NDArray<DType = Self::DType> + NDArrayRead + NDArrayTransform;
type Slice: NDArray<DType = Self::DType> + NDArrayRead + NDArrayTransform;
type Transpose: NDArray<DType = Self::DType> + NDArrayRead + NDArrayTransform;
// Required methods
fn broadcast(self, shape: Shape) -> Result<Self::Broadcast, Error>;
fn expand_dims(self, axes: Vec<usize>) -> Result<Self::Expand, Error>;
fn reshape(self, shape: Shape) -> Result<Self::Reshape, Error>;
fn slice(self, bounds: Vec<AxisBound>) -> Result<Self::Slice, Error>;
fn transpose(
self,
axes: Option<Vec<usize>>
) -> Result<Self::Transpose, Error>;
}