4 releases
0.1.3+deprecated | May 8, 2023 |
---|---|
0.1.2 | Nov 26, 2019 |
0.1.1 | Nov 9, 2019 |
0.1.0 | Nov 9, 2019 |
#1840 in #testing
1,774 downloads per month
Used in 3 crates
7KB
const_fn_assert
Note: As of Rust 1.57 this crate is superseded by native support for panic! in const contexts. Only consider using this crate if you care about supporting compilers between 1.31 and 1.57. |
This crate provide macros assertions who can be used in const
function.
Example
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);
}
The function below panic when running :
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'
}
And this code don't compile :
const _CONST: u8 = my_const_fn(6); //~ ERROR any use of this value will cause an error
Available macros are cfn_assert
, cfn_assert_eq
, cfn_assert_ne
, cfn_debug_assert
, cfn_debug_assert_eq
and cfn_debug_assert_ne
.
Installation
This crate is available
on crates.io and can be used by
adding the following to your project's
Cargo.toml
:
[dependencies]
const_fn_assert = "0.1"
and this to your crate root (main.rs
or lib.rs
):
#[macro_use]
extern crate const_fn_assert;