vecxe 0.1.0

Utility functions for vec
Documentation
pub trait TransmuteExt<U>: Sized {
    type IntoIter: Iterator<Item = U>;
    fn transmute_iter(self) -> Self::IntoIter;
}

impl<T, U, I> TransmuteExt<U> for I
where
    I: IntoIterator<Item = T>,
    U: From<T>,
{
    type IntoIter = std::iter::Map<<I as IntoIterator>::IntoIter, fn(T) -> U>;

    #[inline]
    fn transmute_iter(self) -> Self::IntoIter {
        self.into_iter().map(U::from)
    }
}

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_transumute_i32_to_f64() {
        let v = vec![1, 2, 3];
        let result: Vec<f64> = v.transmute_iter().collect();
        assert_eq!(result, vec![1.0, 2.0, 3.0])
    }
}