acceptor 0.0.1

no_std bundle of thin acceptors built on the accepts core traits
Documentation
use accepts::{Accepts, AsyncAccepts};

use crate::support::{Recorder, block_on};

use super::{AsyncFilter, Filter};

#[test]
fn filters_values_synchronously() {
    let recorder = Recorder::new();
    let filter = Filter::new(|v: &u32| *v % 2 == 0, recorder.clone());

    filter.accept(1);
    filter.accept(2);
    filter.accept(3);
    filter.accept(4);

    assert_eq!(recorder.take(), vec![2, 4]);
}

#[test]
fn filters_values_asynchronously() {
    let recorder = Recorder::new();
    let filter = AsyncFilter::new(
        |v: &u32| {
            let v = *v;
            async move { v > 5 }
        },
        recorder.clone(),
    );

    block_on(filter.accept_async(4));
    block_on(filter.accept_async(6));
    block_on(filter.accept_async(7));

    assert_eq!(recorder.take(), vec![6, 7]);
}