#curry #closures #function #fp

curry-macro

使用 Rust 的原生闭包语法享受 currying 的乐趣

1 个不稳定版本

0.1.0 2020年3月30日

2888Rust 模式

MIT 许可证

5KB

curry-macro

使用 Rust 的原生闭包语法享受 currying 的乐趣。

示例

您可以 currying 一个加法函数,该函数用于加两个数字。

首先,导入 curry 宏

use curry_macro::curry;

然后,您可以选择以下三种函数定义形式

  1. 最简单形式,没有任何类型注解。您需要使用 curried 函数,以便 Rust 编译器可以为您推断输入和返回类型
let add = curry!(|a, b| a + b);
assert_eq!(add(1)(2), 3);
  1. 带有输入类型注解
let add = curry!(|a: i32, b: i32| a + b);
  1. 带有输入和返回类型注解,以及函数体为一个代码块
let add = curry!(|a: i32, b: i32| -> i32 { a + b });

上述三个函数效果相同

// You can generate intermediate functions that are partially applied:
let add1_to = add(1);
let sum = add1_to(2);
assert_eq!(sum, 3);
// You can also can apply all arguments at once:
let sum = add(1)(2);
assert_eq!(sum, 3);

致谢

非常感谢 Korede-TA 他在 curry-macro 上的杰出贡献。

许可证

MIT

无运行时依赖项