You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Make the `#[pin_data]` macro generate a `*Projection` struct that holds
either `Pin<&mut Field>` or `&mut Field` for every field of the original
struct. Which version is chosen depends on weather there is a `#[pin]`
or not respectively. Access to this projected version is enabled through
generating `fn project(self: Pin<&mut Self>) -> SelfProjection<'_>`.
Signed-off-by: Benno Lossin <lossin@kernel.org>
Copy file name to clipboardExpand all lines: tests/ui/compile-fail/pin_data/twice.stderr
+33Lines changed: 33 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -1,3 +1,15 @@
1
+
error[E0428]: the name `FooProjection` is defined multiple times
2
+
--> tests/ui/compile-fail/pin_data/twice.rs:3:1
3
+
|
4
+
3 | #[pin_data]
5
+
| ^^^^^^^^^^^
6
+
| |
7
+
| `FooProjection` redefined here
8
+
| previous definition of the type `FooProjection` here
9
+
|
10
+
= note: `FooProjection` must be defined only once in the type namespace of this module
11
+
= note: this error originates in the macro `$crate::__pin_data` which comes from the expansion of the attribute macro `pin_data` (in Nightly builds, run with -Z macro-backtrace for more info)
12
+
1
13
error[E0119]: conflicting implementations of trait `HasPinData` for type `Foo`
2
14
--> tests/ui/compile-fail/pin_data/twice.rs:3:1
3
15
|
@@ -19,3 +31,24 @@ error[E0119]: conflicting implementations of trait `Unpin` for type `Foo`
19
31
| conflicting implementation for `Foo`
20
32
|
21
33
= note: this error originates in the macro `$crate::__pin_data` which comes from the expansion of the attribute macro `pin_data` (in Nightly builds, run with -Z macro-backtrace for more info)
34
+
35
+
error[E0592]: duplicate definitions with name `project`
36
+
--> tests/ui/compile-fail/pin_data/twice.rs:3:1
37
+
|
38
+
3 | #[pin_data]
39
+
| ^^^^^^^^^^^
40
+
| |
41
+
| duplicate definitions for `project`
42
+
| other definition for `project`
43
+
|
44
+
= note: this error originates in the macro `$crate::__pin_data` which comes from the expansion of the attribute macro `pin_data` (in Nightly builds, run with -Z macro-backtrace for more info)
45
+
46
+
error[E0308]: mismatched types
47
+
--> tests/ui/compile-fail/pin_data/twice.rs:3:1
48
+
|
49
+
3 | #[pin_data]
50
+
| ^^^^^^^^^^^ expected `&mut usize`, found `Pin<&mut usize>`
51
+
|
52
+
= note: expected mutable reference `&mut usize`
53
+
found struct `Pin<&mut usize>`
54
+
= note: this error originates in the macro `$crate::__pin_data` which comes from the expansion of the attribute macro `pin_data` (in Nightly builds, run with -Z macro-backtrace for more info)
0 commit comments