2 个稳定版本
1.1.0 | 2023 年 8 月 7 日 |
---|---|
1.0.0 | 2023 年 8 月 6 日 |
#2875 in Rust 模式
在 2 个 crate 中使用(通过 cartesian_array_product)
4KB
const-anonymous-functions
一个小型 crate,提供了一个宏,用于创建可以在 const 上下文中使用的匿名函数。
它不提供任何新功能,仅提供语法糖。
使用方法
将其添加到您的项目中
cargo add const-anonymous-functions
示例
use const_anonymous_functions::caf;
const RESULT: i32 = caf!(|a: i32, b: i32| -> i32 { a + b })(1, 2);
assert_eq!(RESULT, 1 + 2);
注意事项
使用此 crate 有一些注意事项
- 您必须始终注释函数的类型(参数和返回类型)
- 为了避免混淆,您必须始终在函数体中使用花括号,因此类似
|a: i32| a + 1
的方式是不允许的(请注意,无论哪种方式都是错误的,因为这里的返回类型是()
,所以它不会返回任何内容)。|a: i32| -> i32 { a + 1 }
是正确的写法。
工作原理
这个宏实际上非常简单。它只是将闭包语法转换为 const 函数。然后返回函数。
所以 caf!(|a: i32, b: i32| -> i32 { a + b })
实际上变成了
{
const fn __annon_caf__(a: i32, b: i32) -> i32 {
a + b
}
__annon_caf__
}
# ;
就是这样。