Opaque types are internally MaybeUninit, so it's safe to actually zero-initialize them as long as we don't claim they are initialized. This is useful for many FFI types that are expected to be zero-inited by the user. Signed-off-by: Asahi Lina <lina@xxxxxxxxxxxxx> --- rust/kernel/types.rs | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/rust/kernel/types.rs b/rust/kernel/types.rs index 1e5380b16ed5..185d3493857e 100644 --- a/rust/kernel/types.rs +++ b/rust/kernel/types.rs @@ -237,6 +237,11 @@ pub const fn uninit() -> Self { Self(MaybeUninit::uninit()) } + /// Creates a zeroed value. + pub fn zeroed() -> Self { + Self(MaybeUninit::zeroed()) + } + /// Creates a pin-initializer from the given initializer closure. /// /// The returned initializer calls the given closure with the pointer to the inner `T` of this -- 2.40.1