redstone-ml 0.0.0

High-performance Machine Learning, Auto-Differentiation and Tensor Algebra crate for Rust
Documentation
use crate::axis::AxisType;
use crate::{Axis, RawDataType};
use std::ops::Range;

pub(crate) trait ToVec<T> {
    fn to_vec(self) -> Vec<T>;
}

impl<T: RawDataType> ToVec<T> for T {
    fn to_vec(self) -> Vec<T> {
        vec![self]
    }
}

impl ToVec<isize> for Axis {
    fn to_vec(self) -> Vec<isize> {
        vec![self.isize()]
    }
}

impl<T> ToVec<T> for Vec<T> {
    fn to_vec(self) -> Vec<T> { self }
}

impl<T: Clone> ToVec<T> for &Vec<T> {
    fn to_vec(self) -> Vec<T> { self.clone() }
}

impl<T: Clone> ToVec<T> for &[T] {
    fn to_vec(self) -> Vec<T> { Vec::from(self) }
}

impl<T, const N: usize> ToVec<T> for [T; N] {
    fn to_vec(self) -> Vec<T> {
        Vec::from(self)
    }
}

impl ToVec<usize> for Range<usize> {
    fn to_vec(self) -> Vec<usize> {
        self.collect()
    }
}