#stream #ocaml #functional

streams-rs

类似 OCaml 的流用于 Rust

1 个不稳定版本

0.1.0 2020年5月22日

#7 in #streams

每月 23 次下载

MIT 许可证

11KB
214 代码行

streams-rs

streams-rs 提供类似 OCaml 的流和宏,用于匹配这些流。

为什么?

当需要读取文件的行、使用词法分析器解析某些内容等时,流非常有用。

示例

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);
            }
        });
    }
}

无运行时依赖