rust: pin-init: add `MaybeZeroable` derive macro
authorBenno Lossin <benno.lossin@proton.me>
Mon, 21 Apr 2025 22:18:52 +0000 (22:18 +0000)
committerBenno Lossin <benno.lossin@proton.me>
Thu, 1 May 2025 16:15:26 +0000 (18:15 +0200)
commit00fccd3ecc2129ee32fd181079eb643f497044c4
tree1557f9b7fe9329067606344d6b40ded549150b24
parenta313d41a2b515bbb76d56df490b731ff6d64e571
rust: pin-init: add `MaybeZeroable` derive macro

This derive macro implements `Zeroable` for structs & unions precisely
if all fields also implement `Zeroable` and does nothing otherwise. The
plain `Zeroable` derive macro instead errors when it cannot derive
`Zeroable` safely. The `MaybeZeroable` derive macro is useful in cases
where manual checking is infeasible such as with the bindings crate.

Move the zeroable generics parsing into a standalone function in order
to avoid code duplication between the two derive macros.

Link: https://github.com/Rust-for-Linux/pin-init/pull/42/commits/1165cdad1a391b923efaf30cf76bc61e38da022e
Signed-off-by: Benno Lossin <benno.lossin@proton.me>
rust/pin-init/internal/src/lib.rs
rust/pin-init/internal/src/zeroable.rs
rust/pin-init/src/lib.rs
rust/pin-init/src/macros.rs