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中最高效的展开之一。

功能

  1. 可以处理具有self接收器的函数。
  2. 可以处理泛型和GAT的函数。
  3. 在稳定版上工作。

已知问题

  • 等待 impl_trait_in_fn_trait_return (或作为替代,type_alias_impl_trait),以便能够显著优化柯里化函数。

依赖项

~2MB
~42K SLoC