3个版本 (1个稳定版)
1.0.0 | 2023年3月30日 |
---|---|
0.1.1 | 2023年3月25日 |
0.1.0 | 2023年3月24日 |
1767 在 过程宏 中
每月下载量 30
15KB
167 行
auto_curry
用于Rust中大多数函数的柯里化过程宏。这个过程宏可以被视为未完成的Rust库 cutlass
的完整版本。
add
示例 (/examples/add.rs)
use auto_curry::curry;
#[curry]
fn add(a: i32, b: i32) -> i32 {
a + b
}
fn main() {
assert_eq!(add(1)(2), 3);
println!("{} = {}", add(1)(2), 3);
}
如何展开
截至版本0.1.0,上面示例中的add函数展开为
fn add(a: i32) -> impl Fn(i32) -> i32 {
move |b| { a + b }
}
据我所知,这是稳定版Rust中最高效的展开之一。
功能
- 可以处理具有self接收器的函数。
- 可以处理泛型和GAT的函数。
- 在稳定版上工作。
已知问题
- 等待
impl_trait_in_fn_trait_return
(或作为替代,type_alias_impl_trait
),以便能够显著优化柯里化函数。
依赖项
~2MB
~42K SLoC