Make PinCoerceUnsized require Deref#149218
Conversation
This comment has been minimized.
This comment has been minimized.
f921d32 to
f4fa919
Compare
|
@bors try |
Make PinCoerceUnsized require Deref
This comment has been minimized.
This comment has been minimized.
|
@craterbot check |
|
👌 Experiment ℹ️ Crater is a tool to run experiments across parts of the Rust ecosystem. Learn more |
|
🚧 Experiment ℹ️ Crater is a tool to run experiments across parts of the Rust ecosystem. Learn more |
|
I added these impls because otherwise the introduction of |
|
🎉 Experiment
Footnotes
|
|
👌 Experiment ℹ️ Crater is a tool to run experiments across parts of the Rust ecosystem. Learn more |
…uwer Rollup of 7 pull requests Successful merges: - #149218 (Make PinCoerceUnsized require Deref) - #154094 (add neon load/store assembly test) - #154142 (Delegation: eliminate usage of AST from generics creation) - #154276 (allow `incomplete_features` in more tests) - #154284 (doc: linker-plugin-based LTO: update list of good combinations) - #154286 (Cherry-pick 1.94.1 release notes) - #154303 (Remove more `BuiltinLintDiag` variants - part 2)
This comment has been minimized.
This comment has been minimized.
Make PinCoerceUnsized require Deref Also, delete impls on non-Deref types. Pin doesn't do anything useful for non-Deref types, so PinCoerceUnsized on such types makes no sense. This is a breaking change, since stable code can observe the deleted `PinCoerceUnsized` impls by uselessly coercing between such types inside a `Pin`. There is still some strange behavior, such as `Pin<&mut i32>` being able to coerce to `Pin<&dyn Send>`, but not being able to coerce to `Pin<&i32>`. However, I don't think it's possible to fix this. Fixes #145081
|
This pull request was unapproved. This PR was contained in a rollup (#154312), which was unapproved. Auto build was cancelled due to unapproval. Cancelled workflows: |
969c3df to
b8593ef
Compare
This comment has been minimized.
This comment has been minimized.
Also, delete impls on non-Deref types. Pin doesn't do anything useful for non-Deref types, so PinCoerceUnsized on such types makes no sense. This is a breaking change, since stable code can observe the deleted `PinCoerceUnsized` impls by uselessly coercing between such types inside a `Pin`. There is still some strange behavior, such as `Pin<&mut i32>` being able to coerce to `Pin<&dyn Send>`, but not being able to coerce to `Pin<&i32>`. However, I don't think it's possible to fix this. Fixes rust-lang#145081
b8593ef to
f55c8cc
Compare
|
This PR was rebased onto a different main commit. Here's a range-diff highlighting what actually changed. Rebasing is a normal part of keeping PRs up to date, so no action is needed—this note is just to help reviewers. |
|
The @rustbot ready |
|
@bors r+ |
This comment has been minimized.
This comment has been minimized.
What is this?This is an experimental post-merge analysis report that shows differences in test outcomes between the merged PR and its parent PR.Comparing 8a70352 (parent) -> 64d5cb6 (this PR) Test differencesShow 562 test diffs562 doctest diffs were found. These are ignored, as they are noisy. Test dashboardRun cargo run --manifest-path src/ci/citool/Cargo.toml -- \
test-dashboard 64d5cb603b9caf9063d27d64fdfa61fa7af3b98f --output-dir test-dashboardAnd then open Job duration changes
How to interpret the job duration changes?Job durations can vary a lot, based on the actual runner instance |
|
Finished benchmarking commit (64d5cb6): comparison URL. Overall result: no relevant changes - no action needed@rustbot label: -perf-regression Instruction countThis benchmark run did not return any relevant results for this metric. Max RSS (memory usage)Results (primary -2.3%)A less reliable metric. May be of interest, but not used to determine the overall result above.
CyclesThis benchmark run did not return any relevant results for this metric. Binary sizeThis benchmark run did not return any relevant results for this metric. Bootstrap: 482.838s -> 483.648s (0.17%) |
View all comments
Also, delete impls on non-Deref types.
Pin doesn't do anything useful for non-Deref types, so PinCoerceUnsized on such types makes no sense.
This is a breaking change, since stable code can observe the deleted
PinCoerceUnsizedimpls by uselessly coercing between such types inside aPin.There is still some strange behavior, such as
Pin<&mut i32>being able to coerce toPin<&dyn Send>, but not being able to coerce toPin<&i32>. However, I don't think it's possible to fix this.Fixes #145081