const_fn_assert

Crates.ioconst_fn_assert
lib.rsconst_fn_assert
version0.1.3+deprecated
sourcesrc
created_at2019-11-09 15:39:27.897414
updated_at2023-05-08 14:39:11.927249
descriptionAssertions for const functions.
homepage
repositoryhttps://github.com/powlpy/const_fn_assert
max_upload_size
id179721
size8,454
(powlpy)

documentation

https://docs.rs/const_fn_assert

README

const_fn_assert

Build Status Crate Documentation Minimum rustc version License


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;
Commit count: 18

cargo fmt