| Crates.io | const_fn_assert |
| lib.rs | const_fn_assert |
| version | 0.1.3+deprecated |
| created_at | 2019-11-09 15:39:27.897414+00 |
| updated_at | 2023-05-08 14:39:11.927249+00 |
| description | Assertions for const functions. |
| homepage | |
| repository | https://github.com/powlpy/const_fn_assert |
| max_upload_size | |
| id | 179721 |
| size | 8,454 |
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.
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.
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;