]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
rust: fmt: fix formatting expressions
authorTamir Duberstein <tamird@gmail.com>
Sun, 4 Jan 2026 13:00:27 +0000 (08:00 -0500)
committerMiguel Ojeda <ojeda@kernel.org>
Sun, 4 Jan 2026 22:51:35 +0000 (23:51 +0100)
Allow usage like `pr_info!("one + 1 = {}", one + 1)` to compile by
ensuring that a reference is taken to the entire expression.

[ The errors we would get otherwise look like:

    error[E0277]: `kernel::fmt::Adapter<i32>` doesn't implement `core::fmt::Display`
      --> ../samples/rust/rust_minimal.rs:34:9
       |
    34 |         pr_info!("one + 1 = {}", one + 1);
       |         ^^^^^^^^^^^^^^^^^^^^--^^^^^^^^^^^
       |         |                   |
       |         |                   required by this formatting parameter
       |         `kernel::fmt::Adapter<i32>` cannot be formatted with the default formatter
       |
       = help: the trait `core::fmt::Display` is not implemented for `kernel::fmt::Adapter<i32>`
       = note: in format strings you may be able to use `{:?}` (or {:#?} for pretty-print) instead
       = help: the trait `core::fmt::Display` is implemented for `kernel::fmt::Adapter<&T>`
       = note: this error originates in the macro `$crate::print_macro` which comes from the expansion of the macro `pr_info` (in Nightly builds, run with -Z macro-backtrace for more info)

    - Miguel ]

Fixes: c5cf01ba8dfe ("rust: support formatting of foreign types")
Reported-by: Janne Grunau <j@jannau.net>
Closes: https://rust-for-linux.zulipchat.com/#narrow/channel/288089-General/topic/Custom.20formatting/near/566219493
Signed-off-by: Tamir Duberstein <tamird@gmail.com>
Reviewed-by: Alice Ryhl <aliceryhl@google.com>
Tested-by: Janne Grunau <j@jannau.net>
Reviewed-by: Janne Grunau <j@jannau.net>
Link: https://patch.msgid.link/20260104-fmt-paren-v1-1-6b84bc0da78f@gmail.com
[ Added Signed-off-by back. Reworded title. - Miguel ]
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
rust/macros/fmt.rs

index 2f4b9f6e2211040bf784b19af5913b11d9d55e2c..8354abd54502226575abe84aaa621ac39b30f03d 100644 (file)
@@ -67,7 +67,7 @@ pub(crate) fn fmt(input: TokenStream) -> TokenStream {
                     }
                     (None, acc)
                 })();
-                args.extend(quote_spanned!(first_span => #lhs #adapter(&#rhs)));
+                args.extend(quote_spanned!(first_span => #lhs #adapter(&(#rhs))));
             }
         };