Skip to content

Forbid Reborrow impls for types with destructors - #163519

Merged
rust-bors[bot] merged 1 commit into
rust-lang:mainfrom
Jules-Bertholet:no-reborrow-destructor
Oct 1, 2026
Merged

rust-bors[bot] merged 1 commit into
rust-lang:mainfrom
Jules-Bertholet:no-reborrow-destructor

Conversation

@Jules-Bertholet

Copy link
Copy Markdown
Contributor

Construction of such types should never be so implicit.

Tracking issue: #145612

cc @aapoalas

@rustbot label F-reborrow A-destructors

Construction of such types should never be so implicit.
@rustbot rustbot added S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue. labels Sep 30, 2026
@rustbot

rustbot commented Sep 30, 2026

Copy link
Copy Markdown
Collaborator

r? @mejrs

rustbot has assigned @mejrs.
They will have a look at your PR within the next two weeks and either review your PR or reassign to another reviewer.

Use r? to explicitly pick a reviewer

Why was this reviewer chosen?

The reviewer was selected based on:

  • Owners of files modified in this PR: compiler
  • compiler expanded to 77 candidates
  • Random selection from 18 candidates

@rustbot rustbot added A-destructors Area: Destructors (`Drop`, …) F-reborrow `#![feature(reborrow)]`; see #145612 labels Sep 30, 2026

@mejrs mejrs left a comment •

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Can you expand the test to also cover the case where the reborrow type contains a type with a destructor, rather than directly implementing Drop itself?

View changes since this review

@rustbot rustbot added S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. and removed S-waiting-on-review Status: Awaiting review from the assignee but also interested parties. labels Sep 30, 2026
@rustbot

rustbot commented Sep 30, 2026

Copy link
Copy Markdown
Collaborator

Reminder, once the PR becomes ready for a review, use @rustbot ready.

@Jules-Bertholet

Jules-Bertholet commented Sep 30, 2026 •

Copy link
Copy Markdown
Contributor Author

@mejrs That is already covered by other tests, e.g. https://github.com/rust-lang/rust/blob/7d2cd0fbc092625ea371da704f15f80216d2220e/tests/ui/reborrow/derive_invalid_coherence.rs (fields are required to implement Copy or Reborrow, both of which now conflict with Drop).

@mejrs mejrs left a comment •

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Ah, thanks

@bors r+ rollup

View changes since this review

@rust-bors

rust-bors Bot commented Sep 30, 2026

Copy link
Copy Markdown
Contributor

📌 Commit 728205b has been approved by mejrs

It is now in the queue for this repository.

@rust-bors rust-bors Bot added S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. and removed S-waiting-on-author Status: This is awaiting some action (such as code changes or more information) from the author. labels Sep 30, 2026
JonathanBrouwer added a commit to JonathanBrouwer/rust that referenced this pull request Sep 30, 2026
…ctor, r=mejrs

Forbid  `Reborrow` impls for types with destructors

Construction of such types should never be so implicit.

Tracking issue: rust-lang#145612

cc @aapoalas

@rustbot label F-reborrow A-destructors
JonathanBrouwer added a commit to JonathanBrouwer/rust that referenced this pull request Sep 30, 2026
…ctor, r=mejrs

Forbid  `Reborrow` impls for types with destructors

Construction of such types should never be so implicit.

Tracking issue: rust-lang#145612

cc @aapoalas

@rustbot label F-reborrow A-destructors
JonathanBrouwer added a commit to JonathanBrouwer/rust that referenced this pull request Sep 30, 2026
…ctor, r=mejrs

Forbid  `Reborrow` impls for types with destructors

Construction of such types should never be so implicit.

Tracking issue: rust-lang#145612

cc @aapoalas

@rustbot label F-reborrow A-destructors
rust-bors Bot pushed a commit that referenced this pull request Sep 30, 2026
…uwer

Rollup of 18 pull requests

Successful merges:

 - #163532 (rustc_codegen_cranelift subtree update)
 - #163534 (miri subtree update)
 - #163279 (const and NonZero impl for clamp_magnitude())
 - #162900 (Some refactorings around metadata encoding)
 - #163455 (Don't use the metadata based crate_hash for rustdoc runs)
 - #163483 (Bump bootstrap compiler to 1.100.0 beta)
 - #159798 (Attribute documentation for cfg_attr)
 - #163368 (Don't build format string suggestions from `concat!` offsets)
 - #163375 (Update expect messages in library/std/src/os/unix/net/ following Rust's `expect` guidance)
 - #163405 (Remove some #[linkage] options)
 - #163470 (Miscellaneous attr error stuff)
 - #163489 (expose Rc::is_unique)
 - #163492 (x86 and x86_64: cleanup some callconv code)
 - #163496 (cycle handling: mirror old solver)
 - #163509 (Use more default field values in `Resolver`)
 - #163519 (Forbid  `Reborrow` impls for types with destructors)
 - #163520 (Cast cleanups)
 - #163524 (Document `Result` case for the `arena_cache` query modifier)

Failed merges:

 - #163547 ([beta] rustfmt backport)
JonathanBrouwer added a commit to JonathanBrouwer/rust that referenced this pull request Sep 30, 2026
…ctor, r=mejrs

Forbid  `Reborrow` impls for types with destructors

Construction of such types should never be so implicit.

Tracking issue: rust-lang#145612

cc @aapoalas

@rustbot label F-reborrow A-destructors
rust-bors Bot pushed a commit that referenced this pull request Sep 30, 2026
…uwer

Rollup of 18 pull requests

Successful merges:

 - #163532 (rustc_codegen_cranelift subtree update)
 - #163534 (miri subtree update)
 - #163279 (const and NonZero impl for clamp_magnitude())
 - #162900 (Some refactorings around metadata encoding)
 - #163455 (Don't use the metadata based crate_hash for rustdoc runs)
 - #159798 (Attribute documentation for cfg_attr)
 - #162921 (make mips64 `Complex` GCC-compatible)
 - #163368 (Don't build format string suggestions from `concat!` offsets)
 - #163375 (Update expect messages in library/std/src/os/unix/net/ following Rust's `expect` guidance)
 - #163405 (Remove some #[linkage] options)
 - #163470 (Miscellaneous attr error stuff)
 - #163489 (expose Rc::is_unique)
 - #163492 (x86 and x86_64: cleanup some callconv code)
 - #163496 (cycle handling: mirror old solver)
 - #163509 (Use more default field values in `Resolver`)
 - #163519 (Forbid  `Reborrow` impls for types with destructors)
 - #163520 (Cast cleanups)
 - #163524 (Document `Result` case for the `arena_cache` query modifier)
rust-bors Bot pushed a commit that referenced this pull request Sep 30, 2026
…uwer

Rollup of 18 pull requests

Successful merges:

 - #163532 (rustc_codegen_cranelift subtree update)
 - #163534 (miri subtree update)
 - #163279 (const and NonZero impl for clamp_magnitude())
 - #162900 (Some refactorings around metadata encoding)
 - #163455 (Don't use the metadata based crate_hash for rustdoc runs)
 - #159798 (Attribute documentation for cfg_attr)
 - #162921 (make mips64 `Complex` GCC-compatible)
 - #163368 (Don't build format string suggestions from `concat!` offsets)
 - #163375 (Update expect messages in library/std/src/os/unix/net/ following Rust's `expect` guidance)
 - #163405 (Remove some #[linkage] options)
 - #163470 (Miscellaneous attr error stuff)
 - #163489 (expose Rc::is_unique)
 - #163492 (x86 and x86_64: cleanup some callconv code)
 - #163496 (cycle handling: mirror old solver)
 - #163509 (Use more default field values in `Resolver`)
 - #163519 (Forbid  `Reborrow` impls for types with destructors)
 - #163520 (Cast cleanups)
 - #163524 (Document `Result` case for the `arena_cache` query modifier)
rust-bors Bot pushed a commit that referenced this pull request Oct 1, 2026
Rollup of 20 pull requests

Successful merges:

 - #163279 (const and NonZero impl for clamp_magnitude())
 - #163081 (Provide more context on "not general enough" error)
 - #163455 (Don't use the metadata based crate_hash for rustdoc runs)
 - #159798 (Attribute documentation for cfg_attr)
 - #162921 (make mips64 `Complex` GCC-compatible)
 - #163368 (Don't build format string suggestions from `concat!` offsets)
 - #163375 (Update expect messages in library/std/src/os/unix/net/ following Rust's `expect` guidance)
 - #163470 (Miscellaneous attr error stuff)
 - #163489 (expose Rc::is_unique)
 - #163492 (x86 and x86_64: cleanup some callconv code)
 - #163496 (cycle handling: mirror old solver)
 - #163509 (Use more default field values in `Resolver`)
 - #163519 (Forbid  `Reborrow` impls for types with destructors)
 - #163520 (Cast cleanups)
 - #163524 (Document `Result` case for the `arena_cache` query modifier)
 - #163546 (PassWrapper: adapt for new PassPlugin load method)
 - #163551 (Add libs-nominated triagebot config)
 - #163559 (Suggest `#[unsafe(no_mangle)]` for entry points in `no_std` binaries)
 - #163564 (rustc-dev-guide subtree update)
 - #163568 (remove dead cfg_select! arm)
@rust-bors
rust-bors Bot merged commit 9b013c5 into rust-lang:main Oct 1, 2026
13 checks passed
@rustbot rustbot added this to the 1.101.0 milestone Oct 1, 2026
rust-bors Bot pushed a commit that referenced this pull request Oct 1, 2026
Rollup merge of #163519 - Jules-Bertholet:no-reborrow-destructor, r=mejrs

Forbid  `Reborrow` impls for types with destructors

Construction of such types should never be so implicit.

Tracking issue: #145612

cc @aapoalas

@rustbot label F-reborrow A-destructors
RalfJung pushed a commit to RalfJung/miri that referenced this pull request Oct 1, 2026
Rollup of 20 pull requests

Successful merges:

 - rust-lang/rust#163279 (const and NonZero impl for clamp_magnitude())
 - rust-lang/rust#163081 (Provide more context on "not general enough" error)
 - rust-lang/rust#163455 (Don't use the metadata based crate_hash for rustdoc runs)
 - rust-lang/rust#159798 (Attribute documentation for cfg_attr)
 - rust-lang/rust#162921 (make mips64 `Complex` GCC-compatible)
 - rust-lang/rust#163368 (Don't build format string suggestions from `concat!` offsets)
 - rust-lang/rust#163375 (Update expect messages in library/std/src/os/unix/net/ following Rust's `expect` guidance)
 - rust-lang/rust#163470 (Miscellaneous attr error stuff)
 - rust-lang/rust#163489 (expose Rc::is_unique)
 - rust-lang/rust#163492 (x86 and x86_64: cleanup some callconv code)
 - rust-lang/rust#163496 (cycle handling: mirror old solver)
 - rust-lang/rust#163509 (Use more default field values in `Resolver`)
 - rust-lang/rust#163519 (Forbid  `Reborrow` impls for types with destructors)
 - rust-lang/rust#163520 (Cast cleanups)
 - rust-lang/rust#163524 (Document `Result` case for the `arena_cache` query modifier)
 - rust-lang/rust#163546 (PassWrapper: adapt for new PassPlugin load method)
 - rust-lang/rust#163551 (Add libs-nominated triagebot config)
 - rust-lang/rust#163559 (Suggest `#[unsafe(no_mangle)]` for entry points in `no_std` binaries)
 - rust-lang/rust#163564 (rustc-dev-guide subtree update)
 - rust-lang/rust#163568 (remove dead cfg_select! arm)
@Jules-Bertholet
Jules-Bertholet deleted the no-reborrow-destructor branch October 1, 2026 12:54
github-actions Bot pushed a commit to rust-lang/rustc-dev-guide that referenced this pull request Oct 5, 2026
Rollup of 20 pull requests

Successful merges:

 - rust-lang/rust#163279 (const and NonZero impl for clamp_magnitude())
 - rust-lang/rust#163081 (Provide more context on "not general enough" error)
 - rust-lang/rust#163455 (Don't use the metadata based crate_hash for rustdoc runs)
 - rust-lang/rust#159798 (Attribute documentation for cfg_attr)
 - rust-lang/rust#162921 (make mips64 `Complex` GCC-compatible)
 - rust-lang/rust#163368 (Don't build format string suggestions from `concat!` offsets)
 - rust-lang/rust#163375 (Update expect messages in library/std/src/os/unix/net/ following Rust's `expect` guidance)
 - rust-lang/rust#163470 (Miscellaneous attr error stuff)
 - rust-lang/rust#163489 (expose Rc::is_unique)
 - rust-lang/rust#163492 (x86 and x86_64: cleanup some callconv code)
 - rust-lang/rust#163496 (cycle handling: mirror old solver)
 - rust-lang/rust#163509 (Use more default field values in `Resolver`)
 - rust-lang/rust#163519 (Forbid  `Reborrow` impls for types with destructors)
 - rust-lang/rust#163520 (Cast cleanups)
 - rust-lang/rust#163524 (Document `Result` case for the `arena_cache` query modifier)
 - rust-lang/rust#163546 (PassWrapper: adapt for new PassPlugin load method)
 - rust-lang/rust#163551 (Add libs-nominated triagebot config)
 - rust-lang/rust#163559 (Suggest `#[unsafe(no_mangle)]` for entry points in `no_std` binaries)
 - rust-lang/rust#163564 (rustc-dev-guide subtree update)
 - rust-lang/rust#163568 (remove dead cfg_select! arm)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

A-destructors Area: Destructors (`Drop`, …) F-reborrow `#![feature(reborrow)]`; see #145612 S-waiting-on-bors Status: Waiting on bors to run and complete tests. Bors will change the label on completion. T-compiler Relevant to the compiler team, which will review and decide on the PR/issue.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants