3 个版本

0.1.2 2020 年 5 月 11 日
0.1.1 2020 年 5 月 11 日
0.1.0 2020 年 5 月 11 日

#2928Rust 模式

BSD-3-Clause

28KB
287

fn_trait 库

此 trait 提供名为 chain 的辅助函数和宏,用于简化函数链的创建,其中第一个函数的输出直接作为下一个函数的输入,依此类推。

用法 1 - 宏 chain

use fn_chain::chain;

fn simple_add(a : i32, b : i32, c : i32) -> i32 {
    a + b + c
}

fn pass_through(v : f64) -> f64 {
    v
}

assert_eq!(
    6f64, 
    chain!(
        simple_add(1, 2, 3), 
        |result: i32| {(result as f64).powi(2)}, 
        |sqr: f64| {sqr.powf(0.5)},
        pass_through,
        pass_through
    )
);

用法 2 - 函数 chain

use fn_chain::chain;

fn simple_add(a : i32, b : i32, c : i32) -> i32 {
    a + b + c
}

fn pass_through(v : f64) -> f64 {
    v
}

assert_eq!(6f64, *chain(simple_add(1, 2, 3))
                        .chain(|result| {(result as f64).powi(2)})
                        .chain(|sqr| sqr.powf(0.5))
                        .chain(pass_through)
                        .chain(pass_through));

无运行时依赖