rust: pin-init: internal: init: simplify Zeroable safety check

The `Zeroable` type check uses a small dance with a raw pointer to aid
type inference. It turns out that this is not necessary and type
inference is powerful enough to resolve any ambiguity. Thus remove it.

Suggested-by: Gary Guo <gary@garyguo.net>
Tested-by: Andreas Hindborg <a.hindborg@kernel.org>
Reviewed-by: Gary Guo <gary@garyguo.net>
Signed-off-by: Benno Lossin <lossin@kernel.org>
This commit is contained in:
Benno Lossin 2026-01-16 11:54:29 +01:00
parent ceca298c53
commit 1f1cd6964b

View file

@ -414,17 +414,12 @@ fn make_field_check(
#[allow(unreachable_code, clippy::diverging_sub_expression, unused_assignments)]
// SAFETY: this code is never executed.
let _ = || unsafe {
let mut zeroed = ::core::mem::zeroed();
// We have to use type inference here to make zeroed have the correct type. This
// does not get executed, so it has no effect.
::core::ptr::write(slot, zeroed);
zeroed = ::core::mem::zeroed();
::core::ptr::write(slot, #path {
#(
#(#field_attrs)*
#field_name: ::core::panic!(),
)*
..zeroed
..::core::mem::zeroed()
})
};
},