Re: [PATCH 2/2] change blanket impls for `[Pin]Init` and add one for `Result<T, E>`
From: Benno Lossin
Date: Wed Jun 11 2025 - 17:27:22 EST
On Tue Jun 10, 2025 at 3:44 PM CEST, Danilo Krummrich wrote:
> On 5/29/25 10:10 AM, Benno Lossin wrote:
>> 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@xxxxxxxxxx>
>> Link: https://github.com/Rust-for-Linux/pin-init/pull/62/commits/58612514b256c6f4a4a0718be25298410e67387a
>> [ Also fix a compile error in block. - Benno ]
>> Signed-off-by: Benno Lossin <lossin@xxxxxxxxxx>
>> ---
>>
>> This patch is also needed by Danilo for initializing `Devres`
>> ergonomically.
>
> For this purpose, can you please provide me with a signed tag for this one
> please? Otherwise I can also add the explicit `Infallible` generics in a few
> places until next cycle.
I rebased `pin-init-next` to have these two commits as the first two and
will create a tag a bit later in the cycle when I'm sure that they are
stable.
---
Cheers,
Benno