diff options
author | Altan Ozlu <altan@ozlu.eu> | 2025-03-26 20:25:36 +0000 |
---|---|---|
committer | Miguel Ojeda <ojeda@kernel.org> | 2025-05-12 00:20:25 +0200 |
commit | 0fa5f8c877cae959de7cf6c3dc054e23e7ebcd75 (patch) | |
tree | d9ace5e049901df60b77e4b2ed560106f60950bb /rust/kernel/static_assert.rs | |
parent | 79d04e73ba481f8537691095cdd2cfd3acdb9c80 (diff) |
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>
Diffstat (limited to 'rust/kernel/static_assert.rs')
-rw-r--r-- | rust/kernel/static_assert.rs | 9 |
1 files changed, 7 insertions, 2 deletions
diff --git a/rust/kernel/static_assert.rs b/rust/kernel/static_assert.rs index 3115ee0ba8e9..d8120f838260 100644 --- a/rust/kernel/static_assert.rs +++ b/rust/kernel/static_assert.rs @@ -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)?); }; } |