#const #function #assert #macro #testing

已弃用 无std const_fn_assert

常量函数断言

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

Download history 940/week @ 2024-03-14 1112/week @ 2024-03-21 766/week @ 2024-03-28 542/week @ 2024-04-04 1031/week @ 2024-04-11 910/week @ 2024-04-18 574/week @ 2024-04-25 747/week @ 2024-05-02 738/week @ 2024-05-09 945/week @ 2024-05-16 831/week @ 2024-05-23 1029/week @ 2024-05-30 1020/week @ 2024-06-06 936/week @ 2024-06-13 1008/week @ 2024-06-20 579/week @ 2024-06-27

每月3,681次下载
3 个crate中使用

MIT 许可证

7KB

const_fn_assert

Build Status Crate Documentation Minimum rustc version License


注意: 从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_assertcfn_assert_eqcfn_assert_necfn_debug_assertcfn_debug_assert_eqcfn_debug_assert_ne

安装

此crate在crates.io上可用,可以通过将以下内容添加到项目中的Cargo.toml来使用:

[dependencies]
const_fn_assert = "0.1"

并在crate根目录(main.rslib.rs)中添加以下内容:

#[macro_use]
extern crate const_fn_assert;

无运行时依赖