[][src]Macro static_assertions::const_assert

macro_rules! const_assert {
    ($x:expr $(,)?) => { ... };
}

Asserts that constant expressions evaluate to true.

Constant expressions can be ensured to have certain properties via this macro If the expression evaluates to false, the file will fail to compile. This is synonymous to static_assert in C++.

Alternatives

There also exists const_assert_eq for validating whether a sequence of expressions are equal to one another.

Examples

A common use case is to guarantee properties about a constant value that's generated via meta-programming.

const VALUE: i32 = // ...

const_assert!(VALUE >= 2);

Inputs are type-checked as booleans:

This example deliberately fails to compile
const_assert!(!0);

Despite this being a macro, we see this produces a type error:

  | const_assert!(!0);
  |               ^^ expected bool, found integral variable
  |
  = note: expected type `bool`
             found type `{integer}`

The following fails to compile because multiplying by 5 does not have an identity property:

This example deliberately fails to compile
const_assert!(5 * 5 == 5);