1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
use ppl::prelude::*;
// A closures can be used to build a pipeline.
// When using a closure, the node created is sequential.
#[test]
fn test_closure() {
env_logger::init();
let mut p = pipeline!(
{
// This closure is the source node.
// It is executed until it returns None.
let mut counter = 0;
move || -> Option<usize> {
if counter < 100 {
counter += 1;
Some(counter)
} else {
None
}
}
},
// This closure is the filter node.
|el: usize| -> Option<usize> {
if el % 2 == 0 {
Some(el)
} else {
None
}
},
// This closure is the sink node.
|el: usize| { println!("Hello from: {}", el) }
);
p.start();
assert_eq!(p.wait_end(), None);
}