use crate::{
shapes::*,
tensor::{Storage, Tensor, TensorFromVec, ZerosTensor},
};
use std::vec::Vec;
pub trait Arange<E: Dtype>: Storage<E> + ZerosTensor<E> + TensorFromVec<E> {
fn arange<Size: Dim>(&self, n: Size) -> Tensor<(Size,), E, Self> {
let mut data = Vec::with_capacity(n.size());
for i in 0..n.size() {
data.push(E::from_usize(i).unwrap());
}
self.tensor_from_vec(data, (n,))
}
}
impl<E: Dtype, D: ZerosTensor<E> + TensorFromVec<E>> Arange<E> for D {}