Crates.io | const_fn_assert |
lib.rs | const_fn_assert |
version | 0.1.3+deprecated |
source | src |
created_at | 2019-11-09 15:39:27.897414 |
updated_at | 2023-05-08 14:39:11.927249 |
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;