data-pipeline 0.1.0

A functional and extensible library for organized lazy processing of data with minimal overhead
Documentation
pub mod filter;
pub mod junction;
pub mod stream;

#[cfg(test)]
mod tests {
    use crate::stream::Stream;

    use super::*;

    #[test]
    fn intergation() {
        let one = Stream::new(|| 1.0);
        let x = one.clone().integrate(Some(1.0));
        assert_eq!(x.get(), 1.0);
        assert_eq!(x.get(), 2.0);
    }

    #[test]
    fn differentiation() {
        let one = Stream::new(|| 1.0);
        let zero = one.clone().differentiate(None);
        assert_eq!(zero.get(), 0.0);
        assert_eq!(zero.get(), 0.0);
    }

    #[test]
    fn inverses() {
        let one = Stream::new(|| 1.0);
        let other = one.clone().integrate(Some(1.0));
        let other = other.differentiate(Some(1.0));
        other.get();
        assert_eq!(one.get(), other.get());
        assert_eq!(one.get(), other.get());
    }
}