mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-07-27 04:13:53 -06:00
rust: assertions: add static_assert
Add a new assertion that is similar to "const { assert!(...) }" but can be used outside functions and with older versions of Rust. A similar macro is found in Linux, whereas the "static_assertions" crate has a const_assert macro that produces worse error messages. Suggested-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Paolo Bonzini <pbonzini@redhat.com> Reviewed-by: Zhao Liu <zhao1.liu@intel.com> Reviewed-by: Peter Maydell <peter.maydell@linaro.org> Signed-off-by: Peter Maydell <peter.maydell@linaro.org> Link: https://lore.kernel.org/r/20250321112523.1774131-2-peter.maydell@linaro.org Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
This commit is contained in:
parent
7bda68e8e2
commit
9d116f42a3
1 changed files with 22 additions and 0 deletions
|
@ -120,3 +120,25 @@ macro_rules! assert_match {
|
|||
);
|
||||
};
|
||||
}
|
||||
|
||||
/// Assert at compile time that an expression is true. This is similar
|
||||
/// to `const { assert!(...); }` but it works outside functions, as well as
|
||||
/// on versions of Rust before 1.79.
|
||||
///
|
||||
/// # Examples
|
||||
///
|
||||
/// ```
|
||||
/// # use qemu_api::static_assert;
|
||||
/// static_assert!("abc".len() == 3);
|
||||
/// ```
|
||||
///
|
||||
/// ```compile_fail
|
||||
/// # use qemu_api::static_assert;
|
||||
/// static_assert!("abc".len() == 2); // does not compile
|
||||
/// ```
|
||||
#[macro_export]
|
||||
macro_rules! static_assert {
|
||||
($x:expr) => {
|
||||
const _: () = assert!($x);
|
||||
};
|
||||
}
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue