diff options
| author | Gary Guo <gary@garyguo.net> | 2026-05-27 18:19:57 +0100 |
|---|---|---|
| committer | Gary Guo <gary@garyguo.net> | 2026-05-29 21:34:53 +0100 |
| commit | f85906616ec70d1d0178073b16ebd1c7f6ff1ee7 (patch) | |
| tree | c0df3fceee2dbb081cb1c8ff4c91874161afdebf /rust/pin-init/src | |
| parent | 79bc923ae2a60a227907697abab4ed26c3fc3670 (diff) | |
rust: pin-init: remove `E` from `InitClosure`
Move `E` from type to trait impl block. This greatly shortens the
monomorphized type names. The `__pinned_init` function name is only
slightly shortened as it still encodes the `E` as part of `PinInit<T, E>`
in the symbol.
`T` cannot be moved to trait impl block otherwise it will start to conflict
with the `impl Init<T> for T` as Rust cannot deduce that there're no types
that fulfill `T: FnOnce(*mut T)`.
Link: https://patch.msgid.link/20260527-pin-init-sync-v1-6-e20335ed2501@garyguo.net
Signed-off-by: Gary Guo <gary@garyguo.net>
Diffstat (limited to 'rust/pin-init/src')
| -rw-r--r-- | rust/pin-init/src/lib.rs | 6 |
1 files changed, 3 insertions, 3 deletions
diff --git a/rust/pin-init/src/lib.rs b/rust/pin-init/src/lib.rs index 9732af32795c..fd40c8f244a1 100644 --- a/rust/pin-init/src/lib.rs +++ b/rust/pin-init/src/lib.rs @@ -1096,11 +1096,11 @@ where /// /// It is unsafe to create this type, since the closure needs to fulfill the same safety /// requirement as the `__pinned_init`/`__init` functions. -struct InitClosure<F, T: ?Sized, E>(F, __internal::PhantomInvariant<(E, T)>); +struct InitClosure<F, T: ?Sized>(F, __internal::PhantomInvariant<T>); // SAFETY: While constructing the `InitClosure`, the user promised that it upholds the // `__init` invariants. -unsafe impl<T: ?Sized, F, E> Init<T, E> for InitClosure<F, T, E> +unsafe impl<T: ?Sized, F, E> Init<T, E> for InitClosure<F, T> where F: FnOnce(*mut T) -> Result<(), E>, { @@ -1112,7 +1112,7 @@ where // SAFETY: While constructing the `InitClosure`, the user promised that it upholds the // `__pinned_init` invariants. -unsafe impl<T: ?Sized, F, E> PinInit<T, E> for InitClosure<F, T, E> +unsafe impl<T: ?Sized, F, E> PinInit<T, E> for InitClosure<F, T> where F: FnOnce(*mut T) -> Result<(), E>, { |
