mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-27 20:13:08 -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