#function #anonymous #const #macro

const-anonymous-functions

创建 const 匿名函数的简单宏

2 个稳定版本

1.1.0 2023 年 8 月 7 日
1.0.0 2023 年 8 月 6 日

#2875 in Rust 模式


2 个 crate 中使用(通过 cartesian_array_product

MIT 许可证

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__
}
# ;

就是这样。

无运行时依赖