dataflow 0.4.0

Dataflow is a data processing library, primarily for machine learning.
Documentation
use rand::{rngs::StdRng, seq::SliceRandom, SeedableRng};

use crate::pipeline::Node;
use std::marker::PhantomData;

pub struct Shuffle<T> {
    rng: StdRng,
    _phantom: PhantomData<T>,
}

impl<T> Default for Shuffle<T> {
    fn default() -> Self {
        Self {
            rng: StdRng::from_entropy(),
            _phantom: Default::default(),
        }
    }
}

impl<T> Node<Vec<T>> for Shuffle<T> {
    type Output = Vec<T>;

    fn process(&mut self, mut input: Vec<T>) -> Self::Output {
        input.shuffle(&mut self.rng);
        input
    }
}