Merge tag 'mfd-next-6.4' of git://git.kernel.org/pub/scm/linux/kernel/git/lee/mfd
[linux-block.git] / rust / kernel / static_assert.rs
CommitLineData
ef9e3797
MO
1// SPDX-License-Identifier: GPL-2.0
2
3//! Static assert.
4
5/// Static assert (i.e. compile-time assert).
6///
7/// Similar to C11 [`_Static_assert`] and C++11 [`static_assert`].
8///
9/// The feature may be added to Rust in the future: see [RFC 2790].
10///
11/// [`_Static_assert`]: https://en.cppreference.com/w/c/language/_Static_assert
12/// [`static_assert`]: https://en.cppreference.com/w/cpp/language/static_assert
13/// [RFC 2790]: https://github.com/rust-lang/rfcs/issues/2790
14///
15/// # Examples
16///
17/// ```
18/// static_assert!(42 > 24);
19/// static_assert!(core::mem::size_of::<u8>() == 1);
20///
21/// const X: &[u8] = b"bar";
22/// static_assert!(X[1] == b'a');
23///
24/// const fn f(x: i32) -> i32 {
25/// x + 2
26/// }
27/// static_assert!(f(40) == 42);
28/// ```
29#[macro_export]
30macro_rules! static_assert {
31 ($condition:expr) => {
32 const _: () = core::assert!($condition);
33 };
34}