signal_processing 0.3.0

A signal processing library.
Documentation
use crate::quantities::ProductSequence;

impl<T1, T2> From<ProductSequence<T1, ()>> for ProductSequence<T2, [T2; 0]>
{
    fn from(_: ProductSequence<T1, ()>) -> Self
    {
        Self::new(
            []
        )
    }
}
impl<T1, T2> From<ProductSequence<T1, ()>> for ProductSequence<T2, &[T2; 0]>
{
    fn from(_: ProductSequence<T1, ()>) -> Self
    {
        Self::new(
            &[]
        )
    }
}
impl<T1, T2> From<ProductSequence<T1, ()>> for ProductSequence<T2, Vec<T2>>
{
    fn from(_: ProductSequence<T1, ()>) -> Self
    {
        Self::new(
            vec![]
        )
    }
}
impl<T1, T2> From<ProductSequence<T1, ()>> for ProductSequence<T2, &[T2]>
{
    fn from(_: ProductSequence<T1, ()>) -> Self
    {
        Self::new(
            &[]
        )
    }
}

impl<T1, T2, const M: usize> From<ProductSequence<T1, [T1; M]>> for ProductSequence<T2, Vec<T2>>
where
    T1: Into<T2>
{
    fn from(s: ProductSequence<T1, [T1; M]>) -> Self
    {
        Self::new(
            s.s.into_iter()
                .map(Into::into)
                .collect()
        )
    }
}

impl<T1, T2, const M: usize> From<ProductSequence<T1, &[T1; M]>> for ProductSequence<T2, [T2; M]>
where
    T1: Clone + Into<T2>
{
    fn from(s: ProductSequence<T1, &[T1; M]>) -> Self
    {
        Self::new(
            s.s.clone()
                .map(Into::into)
        )
    }
}
impl<T1, T2, const M: usize> From<ProductSequence<T1, &[T1; M]>> for ProductSequence<T2, Vec<T2>>
where
    T1: Clone + Into<T2>
{
    fn from(s: ProductSequence<T1, &[T1; M]>) -> Self
    {
        Self::new(
            s.s.iter()
                .map(|s| s.clone().into())
                .collect()
        )
    }
}
impl<'a, T, const M: usize> From<ProductSequence<T, &'a [T; M]>> for ProductSequence<T, &'a [T]>
{
    fn from(s: ProductSequence<T, &'a [T; M]>) -> Self
    {
        Self::new(
            s.s.as_slice()
        )
    }
}

impl<T1, T2> From<ProductSequence<T1, &[T1]>> for ProductSequence<T2, Vec<T2>>
where
    T1: Clone + Into<T2>
{
    fn from(s: ProductSequence<T1, &[T1]>) -> Self
    {
        Self::new(
            s.s.iter()
                .map(|s| s.clone().into())
                .collect()
        )
    }
}