Crates.io | streams-rs |
lib.rs | streams-rs |
version | 0.1.0 |
source | src |
created_at | 2020-05-22 10:50:31.635057 |
updated_at | 2020-05-22 10:50:31.635057 |
description | OCaml like streams for Russt |
homepage | |
repository | https://github.com/playXE/streams-rs |
max_upload_size | |
id | 244530 |
size | 12,736 |
streams-rs provides OCaml like streams and macro to match on these streams.
Streams is really usefull when you have to read lines of files, parse something using lexer etc.
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=>] => { // if not 0 then we do not match
println!("Zero!");
}
});
let _ = smatch!(match (stream) {
[1=>] => { // if not 1 then we do not match
println!("One!");
}
});
for _ in 0..10 {
let _ = smatch!(match (stream) {
[a=>b=>] => { // get two values a and b from stream
println!("a: {} b: {}",a,b);
}
});
}
}