1
Fork 0

Rollup merge of #130526 - eholk:pin-reborrow, r=compiler-errors

Begin experimental support for pin reborrowing

This commit adds basic support for reborrowing `Pin` types in argument position. At the moment it only supports reborrowing `Pin<&mut T>` as `Pin<&mut T>` by inserting a call to `Pin::as_mut()`, and only in argument position (not as the receiver in a method call).

This PR makes the following example compile:

```rust
#![feature(pin_ergonomics)]

fn foo(_: Pin<&mut Foo>) {
}

fn bar(mut x: Pin<&mut Foo>) {
    foo(x);
    foo(x);
}
```

Previously, you would have had to write `bar` as:

```rust
fn bar(mut x: Pin<&mut Foo>) {
    foo(x.as_mut());
    foo(x);
}
```

Tracking:

- #130494

r? `@compiler-errors`
This commit is contained in:
Guillaume Gomez 2024-09-20 19:46:38 +02:00 committed by GitHub
commit fe5f734e6a
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
17 changed files with 316 additions and 3 deletions

View file

@ -1453,6 +1453,7 @@ symbols! {
pic,
pie,
pin,
pin_ergonomics,
platform_intrinsics,
plugin,
plugin_registrar,