4个版本
0.1.3+已弃用 | 2023年5月8日 |
---|---|
0.1.2 | 2019年11月26日 |
0.1.1 | 2019年11月9日 |
0.1.0 | 2019年11月9日 |
#130 在 #assert 中
每月3,681次下载
在 3 个crate中使用
7KB
const_fn_assert
注意: 从Rust 1.57版本开始,这个crate被const上下文中panic!的原生支持所取代。只有当您关心支持1.31到1.57之间的编译器时,才考虑使用此crate。 |
此crate提供可以在const
函数中使用的宏断言。
示例
const fn my_const_fn(x: u8) -> u8 {
cfn_assert!(x < 5);
x + 1
}
const _CONST: u8 = my_const_fn(1);
fn main() {
let _var = my_const_fn(2);
}
下面的函数在运行时将引发panic
fn fail() {
let _var = my_const_fn(6); //thread 'main' panicked at 'index out of bounds: the len is 1 but the index is 1'
}
此代码无法编译
const _CONST: u8 = my_const_fn(6); //~ ERROR any use of this value will cause an error
可用的宏有cfn_assert
、cfn_assert_eq
、cfn_assert_ne
、cfn_debug_assert
、cfn_debug_assert_eq
和cfn_debug_assert_ne
。
安装
此crate在crates.io
上可用,可以通过将以下内容添加到项目中的Cargo.toml
来使用:
[dependencies]
const_fn_assert = "0.1"
并在crate根目录(main.rs
或lib.rs
)中添加以下内容:
#[macro_use]
extern crate const_fn_assert;