streams-rs
streams-rs provides OCaml like streams and macro to match on these streams.
Why?
Streams is really usefull when you have to read lines of files, parse something using lexer etc.
Example:
extern crate streams_rs;
use streams_rs::fn_stream::FnStream;
use streams_rs::*;
fn main() {
let mut count = 0;
let get = || {
count += 1;
StreamResult::Ok(count - 1)
};
let mut stream = FnStream::new(get);
let _ = smatch!(match (stream) {
[0=>] => { println!("Zero!");
}
});
let _ = smatch!(match (stream) {
[1=>] => { println!("One!");
}
});
for _ in 0..10 {
let _ = smatch!(match (stream) {
[a=>b=>] => { println!("a: {} b: {}",a,b);
}
});
}
}