Re: [PATCH v2 00/20] rust: pin-init: create self references safely

From: Gary Guo

Date: Sun Oct 11 2026 - 06:38:11 EST


On Thu Oct 8, 2026 at 8:24 PM BST, Gary Guo wrote:
> Gary Guo (20):
> kbuild: rust: allow `clippy::comparison_chain` globally
> rust: pin-init: internal: pin_data: infer self-referential struct
> rust: pin-init: internal: pin_data: rewrite fields that borrow others
> rust: pin-init: internal: pin_data: pin borrowed fields with wrapper
> rust: pin-init: internal: pin_data: teach drop check about generics that cannot dangle
> rust: pin-init: internal: pin_data: self-referential drop order checks
> rust: pin-init: internal: pin_data: check covariance of self-referential fields
> rust: pin-init: internal: pin_data: implement initialization of borrowed structs
> rust: pin-init: internal: pin_data: project self-referential fields
> rust: pin-init: internal: pin_data: add `with_project` method
> rust: pin-init: internal: pin_data: enable self-referential support
> rust: pin-init: internal: pin_data: allow lifetime to be shortened per field drop order
> rust: pin-init: internal: pin_data: parse explicit `#[borrowed]` annotation
> rust: pin-init: internal: pin_data: support mutable borrows
> rust: pin-init: internal: pin_data: parse explicit `#[uses]` annotation
> rust: pin-init: internal: pin_data: make field lifetime invariance imply type invariance
> rust: pin-init: internal: pin_data: complete invariant borrow support
> rust: pin-init: internal: pin_data: perform AST lifetime replacement if possible
> rust: pin-init: internal: pin_data: support shared projection
> rust: pin-init: internal: pin_data: support existential lifetimes

Applied to pin-init-next. Thanks all!

Best,
Gary

>
> Makefile | 2 +
> rust/pin-init/examples/selfref.rs | 60 ++
> rust/pin-init/internal/src/init.rs | 42 +-
> rust/pin-init/internal/src/pin_data.rs | 1563 +++++++++++++++++++++++++++++++-
> rust/pin-init/internal/src/util.rs | 269 +++++-
> rust/pin-init/src/__internal.rs | 357 +++++++-
> rust/pin-init/src/lib.rs | 1 +
> 7 files changed, 2246 insertions(+), 48 deletions(-)