mirror of
git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-03-22 07:27:12 +08:00
rust: static_assert: add optional message
Add an optional panic message to the `static_assert!` macro. The panic message doesn't support argument formatting, because the `assert!` macro only supports formatting in non-const contexts. Suggested-by: Miguel Ojeda <ojeda@kernel.org> Link: https://github.com/Rust-for-Linux/linux/issues/1149 Signed-off-by: Altan Ozlu <altan@ozlu.eu> Reviewed-by: Benno Lossin <benno.lossin@proton.me> Reviewed-by: Trevor Gross <tmgross@umich.edu> Link: https://lore.kernel.org/r/20250326202520.1176162-2-altan@ozlu.eu Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
This commit is contained in:
@@ -6,6 +6,10 @@
|
||||
///
|
||||
/// Similar to C11 [`_Static_assert`] and C++11 [`static_assert`].
|
||||
///
|
||||
/// An optional panic message can be supplied after the expression.
|
||||
/// Currently only a string literal without formatting is supported
|
||||
/// due to constness limitations of the [`assert!`] macro.
|
||||
///
|
||||
/// The feature may be added to Rust in the future: see [RFC 2790].
|
||||
///
|
||||
/// [`_Static_assert`]: https://en.cppreference.com/w/c/language/_Static_assert
|
||||
@@ -25,10 +29,11 @@
|
||||
/// x + 2
|
||||
/// }
|
||||
/// static_assert!(f(40) == 42);
|
||||
/// static_assert!(f(40) == 42, "f(x) must add 2 to the given input.");
|
||||
/// ```
|
||||
#[macro_export]
|
||||
macro_rules! static_assert {
|
||||
($condition:expr) => {
|
||||
const _: () = core::assert!($condition);
|
||||
($condition:expr $(,$arg:literal)?) => {
|
||||
const _: () = core::assert!($condition $(,$arg)?);
|
||||
};
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user