22 个版本
0.4.10 | 2024 年 4 月 21 日 |
---|---|
0.4.9 | 2022 年 1 月 3 日 |
0.4.8 | 2021 年 5 月 19 日 |
0.4.6 | 2021 年 3 月 27 日 |
0.1.2 | 2018 年 12 月 27 日 |
#795 in Rust 模式
每月 522,885 次下载
用于 1,082 个 crate (直接使用 9 个)
29KB
486 行
#[const_fn]
一个轻量级的属性,用于轻松生成具有条件编译的 const 函数。
用法
将以下内容添加到您的 Cargo.toml
[dependencies]
const_fn = "0.4"
示例
use const_fn::const_fn;
// function is `const` on specified version and later compiler (including beta, nightly, and dev build)
#[const_fn("1.36")]
pub const fn version() {
/* ... */
}
// function is `const` on nightly compiler (including dev build)
#[const_fn(nightly)]
pub const fn nightly() {
/* ... */
}
// function is `const` if `cfg(...)` is true
#[const_fn(cfg(...))]
pub const fn cfg() {
/* ... */
}
// function is `const` if `cfg(feature = "...")` is true
#[const_fn(feature = "...")]
pub const fn feature() {
/* ... */
}
将此 crate 作为可选依赖项使用
如果没有传递任何参数,const_fn
将始终使函数为 const
。
因此,您可以通过结合 cfg_attr
来将 const_fn
作为可选依赖项使用。
// function is `const` if `cfg(feature = "...")` is true
#[cfg_attr(feature = "...", const_fn::const_fn)]
pub fn optional() {
/* ... */
}
替代方案
此 crate 是 proc-macro,但非常轻量级,没有依赖关系。
您可以手动定义具有类似功能的声明式宏(参见 if_rust_version
),或者 您可以定义两个具有不同 cfg 的相同函数。(注意:前者方法需要根据版本要求定义更多宏,后者方法需要手动维护更多函数)
许可证
根据您的选择,受 Apache 许可证,版本 2.0 或 MIT 许可证 的许可。
除非您明确说明,否则根据 Apache-2.0 许可证定义的您有意提交以包含在作品中的任何贡献,都应按照上述方式双重许可,而无需任何附加条款或条件。