<feed xmlns='http://www.w3.org/2005/Atom'>
<title>rust/compiler/rustc_borrowck, branch master</title>
<subtitle>https://github.com/rust-lang/rust
</subtitle>
<id>http://git.dreamy.place/mirrors/rust/atom?h=master</id>
<link rel='self' href='http://git.dreamy.place/mirrors/rust/atom?h=master'/>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/'/>
<updated>2025-10-02T08:09:33+00:00</updated>
<entry>
<title>Auto merge of #147138 - jackh726:split-canonical-bound, r=lcnr</title>
<updated>2025-10-02T08:09:33+00:00</updated>
<author>
<name>bors</name>
<email>bors@rust-lang.org</email>
</author>
<published>2025-10-02T08:09:33+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=4b9c62b4da3e17cee99d3d2052f1c576b188e2a8'/>
<id>urn:sha1:4b9c62b4da3e17cee99d3d2052f1c576b188e2a8</id>
<content type='text'>
Split Bound index into Canonical and Bound

See [#t-types/trait-system-refactor &gt; perf &amp;#96;async-closures/post-mono-higher-ranked-hang.rs&amp;#96;](https://rust-lang.zulipchat.com/#narrow/channel/364551-t-types.2Ftrait-system-refactor/topic/perf.20.60async-closures.2Fpost-mono-higher-ranked-hang.2Ers.60/with/541535613) for context

Things compile and tests pass, but not sure if this actually solves the perf issue (edit: it does). Opening up this to do a perf (and maybe crater) run.

r? lcnr
</content>
</entry>
<entry>
<title>Auto merge of #147055 - beepster4096:subtype_is_not_a_projection, r=lcnr</title>
<updated>2025-10-02T01:54:48+00:00</updated>
<author>
<name>bors</name>
<email>bors@rust-lang.org</email>
</author>
<published>2025-10-02T01:54:48+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=42b384ec0dfcd528d99a4db0a337d9188a9eecaa'/>
<id>urn:sha1:42b384ec0dfcd528d99a4db0a337d9188a9eecaa</id>
<content type='text'>
Turn ProjectionElem::Subtype into CastKind::Subtype

I noticed that drop elaboration can't, in general, handle `ProjectionElem::SubType`. It creates a disjoint move path that overlaps with other move paths. (`Subslice` does too, and I'm working on a different PR to make that special case less fragile.) If its skipped and treated as the same move path as its parent then `MovePath.place` has multiple possible projections. (It would probably make sense to remove all `Subtype` projections for the canonical place but it doesn't make sense to have this special case for a problem that doesn't actually occur in real MIR.)

The only reason this doesn't break is that `Subtype` is always the sole projection of the local its applied to. For the same reason, it works fine as a `CastKind` so I figured that makes more sense than documenting and validating this hidden invariant.

cc rust-lang/rust#112651, rust-lang/rust#133258

r? Icnr (bc you've been the main person dealing with `Subtype` it looks like)
</content>
</entry>
<entry>
<title>Split Bound into Canonical and Bound</title>
<updated>2025-09-30T16:58:28+00:00</updated>
<author>
<name>jackh726</name>
<email>git@jackhuey.me</email>
</author>
<published>2025-09-28T23:04:55+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=d1bbd39c59523d7a5499816a9da200a5910f8b7f'/>
<id>urn:sha1:d1bbd39c59523d7a5499816a9da200a5910f8b7f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Rollup merge of #147109 - BoxyUwU:rename_concrete_opaques, r=lcnr</title>
<updated>2025-09-30T12:25:17+00:00</updated>
<author>
<name>Stuart Cook</name>
<email>Zalathar@users.noreply.github.com</email>
</author>
<published>2025-09-30T12:25:17+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=156d150381ab2e5f2dc2c78eb83b76d7ae95733c'/>
<id>urn:sha1:156d150381ab2e5f2dc2c78eb83b76d7ae95733c</id>
<content type='text'>
Rename various "concrete opaque type" things to say "hidden type"

r? lcnr

I've found "concrete opaque type" terminology to be somewhat confusing as in conversation and when explaining opaque type stuff to people I always just talk about things in terms of hidden types. Also the hidden types of opaques are very much not *concrete* in the same sense that a type without any generic parameters is concrete which is an unfortunate overlap in terminology.

I've tried to update comments to also stop referring to things as concrete opaque types but this is mostly best effort as it difficult to find all such cases amongst the massive amounts of uses of "concrete" or "hidden" across the whole compiler.
</content>
</entry>
<entry>
<title>more rename</title>
<updated>2025-09-29T15:06:25+00:00</updated>
<author>
<name>Boxy Uwu</name>
<email>rust@boxyuwu.dev</email>
</author>
<published>2025-09-29T15:05:44+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=66b664c9961e54282fbaccef72f90dfa7dd1418f'/>
<id>urn:sha1:66b664c9961e54282fbaccef72f90dfa7dd1418f</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Point at multiple outlives requirements instead of just the first one</title>
<updated>2025-09-28T21:13:53+00:00</updated>
<author>
<name>Esteban Küber</name>
<email>esteban@kuber.com.ar</email>
</author>
<published>2025-09-28T21:13:53+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=c5313fed76a99942edb4c7f94607fa3d2d6da21c'/>
<id>urn:sha1:c5313fed76a99942edb4c7f94607fa3d2d6da21c</id>
<content type='text'>
```
error[E0716]: temporary value dropped while borrowed
  --&gt; $DIR/multiple-sources-for-outlives-requirement.rs:5:38
   |
LL | fn foo&lt;'b&gt;() {
   |        -- lifetime `'b` defined here
LL |     outlives_indir::&lt;'_, 'b, _&gt;(&amp;mut 1u32);
   |     ---------------------------------^^^^-- temporary value is freed at the end of this statement
   |     |                                |
   |     |                                creates a temporary value which is freed while still in use
   |     argument requires that borrow lasts for `'b`
   |
note: requirements that the value outlives `'b` introduced here
  --&gt; $DIR/multiple-sources-for-outlives-requirement.rs:1:23
   |
LL | fn outlives_indir&lt;'a: 'b, 'b, T: 'a&gt;(_x: T) {}
   |                       ^^         ^^
```
</content>
</entry>
<entry>
<title>Address review comment</title>
<updated>2025-09-28T20:58:44+00:00</updated>
<author>
<name>Esteban Küber</name>
<email>esteban@kuber.com.ar</email>
</author>
<published>2025-09-28T20:58:44+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=58f5260b960004090bfa9e7ef5068d6554ac9f33'/>
<id>urn:sha1:58f5260b960004090bfa9e7ef5068d6554ac9f33</id>
<content type='text'>
</content>
</entry>
<entry>
<title>reword note</title>
<updated>2025-09-28T20:55:35+00:00</updated>
<author>
<name>Esteban Küber</name>
<email>esteban@kuber.com.ar</email>
</author>
<published>2025-08-31T20:42:01+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=4973903cd204dd2cd36e15267de72ed6d954e3a6'/>
<id>urn:sha1:4973903cd204dd2cd36e15267de72ed6d954e3a6</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Point at lifetime requirement origin in more cases</title>
<updated>2025-09-28T20:55:34+00:00</updated>
<author>
<name>Esteban Küber</name>
<email>esteban@kuber.com.ar</email>
</author>
<published>2025-08-29T20:14:01+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=7a0319f01d08e541c8e16febaa68c5fa8b66b586'/>
<id>urn:sha1:7a0319f01d08e541c8e16febaa68c5fa8b66b586</id>
<content type='text'>
</content>
</entry>
<entry>
<title>Point at fn bound that introduced lifetime obligation</title>
<updated>2025-09-28T20:55:34+00:00</updated>
<author>
<name>Esteban Küber</name>
<email>esteban@kuber.com.ar</email>
</author>
<published>2025-08-29T19:35:22+00:00</published>
<link rel='alternate' type='text/html' href='http://git.dreamy.place/mirrors/rust/commit/?id=c3e0b29e79f347edf7e0ae559bfec2d3cdf353d8'/>
<id>urn:sha1:c3e0b29e79f347edf7e0ae559bfec2d3cdf353d8</id>
<content type='text'>
```
error[E0597]: `c` does not live long enough
  --&gt; $DIR/without-precise-captures-we-are-powerless.rs:19:20
   |
LL | fn simple&lt;'a&gt;(x: &amp;'a i32) {
   |           -- lifetime `'a` defined here
...
LL |     let c = async move || { println!("{}", *x); };
   |         - binding `c` declared here
LL |     outlives::&lt;'a&gt;(c());
   |     ---------------^---
   |     |              |
   |     |              borrowed value does not live long enough
   |     argument requires that `c` is borrowed for `'a`
LL |     outlives::&lt;'a&gt;(call_once(c));
LL | }
   | - `c` dropped here while still borrowed
   |
note: requirement that `c` is borrowed for `'a` introduced here
  --&gt; $DIR/without-precise-captures-we-are-powerless.rs:7:33
   |
LL | fn outlives&lt;'a&gt;(_: impl Sized + 'a) {}
   |                                 ^^
```

When encountering a `ConstraintCategory::Predicate` in a funtion call, point at the `Span` for that `Predicate` to explain where the lifetime obligation originates from.
</content>
</entry>
</feed>
