1 个不稳定版本
0.1.0 | 2021 年 6 月 19 日 |
---|
#13 in #scala
7KB
placeholder_closure
Scala 为 Rust 提供的占位符语法。
use placeholder_closure::λ;
let xs = xs.into_iter().map(λ!($ + 1)).collect::<Vec<_>>();
fn dot<F: FnOnce(Y) -> Z, G: FnOnce(X) -> Y, X, Y, Z>(f: F, g: G) -> impl FnOnce(X) -> Z {
λ!(move { f(g($)) })
}
用法
请参阅 Docs.rs 上的文档。
许可证
许可协议为 CC0-1.0。
lib.rs
:
Scala 为 Rust 提供的占位符语法。
use placeholder_closure::λ;
let xs = xs.into_iter().map(λ!($ + 1)).collect::<Vec<_>>();
工作原理
λ!
(或lambda!
)宏将 0 个或多个 $
字符替换为闭包参数。
let f = λ!($ + 1);
将会是
let f = |__0| __0 + 1;
构建 move
闭包
您还可以构建 move
闭包。
fn dot<F: FnOnce(Y) -> Z, G: FnOnce(X) -> Y, X, Y, Z>(f: F, g: G) -> impl FnOnce(X) -> Z {
λ!(move { f(g($)) })
}
依赖关系
~1.5MB
~35K SLoC