rust: add derive macro for `Zeroable`
authorBenno Lossin <benno.lossin@proton.me>
Mon, 14 Aug 2023 08:46:41 +0000 (08:46 +0000)
committerMiguel Ojeda <ojeda@kernel.org>
Mon, 21 Aug 2023 12:31:48 +0000 (14:31 +0200)
commit071cedc84e907f6984b3de3285ec2b077d3c3cdb
treeee2ef5892e8c925df4f1b16df99527c5c564aab3
parentf8badd150763ae0f9c8482fabe0fdbac81735d34
rust: add derive macro for `Zeroable`

Add a derive proc-macro for the `Zeroable` trait. The macro supports
structs where every field implements the `Zeroable` trait. This way
`unsafe` implementations can be avoided.

The macro is split into two parts:
- a proc-macro to parse generics into impl and ty generics,
- a declarative macro that expands to the impl block.

Suggested-by: Asahi Lina <lina@asahilina.net>
Signed-off-by: Benno Lossin <benno.lossin@proton.me>
Reviewed-by: Gary Guo <gary@garyguo.net>
Reviewed-by: Martin Rodriguez Reboredo <yakoyoku@gmail.com>
Link: https://lore.kernel.org/r/20230814084602.25699-4-benno.lossin@proton.me
[ Added `ignore` to the `lib.rs` example and cleaned trivial nit. ]
Signed-off-by: Miguel Ojeda <ojeda@kernel.org>
rust/kernel/init/macros.rs
rust/kernel/prelude.rs
rust/macros/lib.rs
rust/macros/quote.rs
rust/macros/zeroable.rs [new file with mode: 0644]