]> git.ipfire.org Git - thirdparty/kernel/stable.git/commit
rust: pin-init: change blanket impls for `[Pin]Init` and add one for `Result<T, E>`
authorBenno Lossin <lossin@kernel.org>
Thu, 29 May 2025 08:10:24 +0000 (10:10 +0200)
committerBenno Lossin <lossin@kernel.org>
Wed, 11 Jun 2025 19:13:56 +0000 (21:13 +0200)
commite832374ccadf4d1ce7bd40a85b9320bd7fbb3628
tree4c6a78a7786337fbb0848677ae581be1734071aa
parent8b3d955f72f999ccce26aabdeb09939964d05a61
rust: pin-init: change blanket impls for `[Pin]Init` and add one for `Result<T, E>`

Remove the error from the blanket implementations `impl<T, E> Init<T, E>
for T` (and also for `PinInit`). Add implementations for `Result<T, E>`.

This allows one to easily construct (un)conditional failing
initializers. It also improves the compatibility with APIs that do not
use pin-init, because users can supply a `Result<T, E>` to a  function
taking an `impl PinInit<T, E>`.

Suggested-by: Alice Ryhl <aliceryhl@google.com>
Link: https://github.com/Rust-for-Linux/pin-init/pull/62/commits/58612514b256c6f4a4a0718be25298410e67387a
[ Also fix a compile error in block. - Benno ]
Reviewed-by: Boqun Feng <boqun.feng@gmail.com>
Link: https://lore.kernel.org/all/20250529081027.297648-2-lossin@kernel.org
[ Add title prefix `rust: pin-init`. - Benno ]
Signed-off-by: Benno Lossin <lossin@kernel.org>
rust/kernel/block/mq/tag_set.rs
rust/pin-init/src/lib.rs