]> git.lizzy.rs Git - rust.git/blob - src/test/ui/suggestions/expected-boxed-future-isnt-pinned.stderr
Merge commit 'e8dca3e87d164d2806098c462c6ce41301341f68' into sync_from_cg_gcc
[rust.git] / src / test / ui / suggestions / expected-boxed-future-isnt-pinned.stderr
1 error[E0308]: mismatched types
2   --> $DIR/expected-boxed-future-isnt-pinned.rs:11:5
3    |
4 LL | fn foo<F: Future<Output=i32> + Send + 'static>(x: F) -> BoxFuture<'static, i32> {
5    |        - this type parameter                            ----------------------- expected `Pin<Box<(dyn Future<Output = i32> + Send + 'static)>>` because of return type
6 LL |     // We could instead use an `async` block, but this way we have no std spans.
7 LL |     x
8    |     ^ expected struct `Pin`, found type parameter `F`
9    |
10    = note:      expected struct `Pin<Box<(dyn Future<Output = i32> + Send + 'static)>>`
11            found type parameter `F`
12 help: you need to pin and box this expression
13    |
14 LL |     Box::pin(x)
15    |     +++++++++ +
16
17 error[E0308]: mismatched types
18   --> $DIR/expected-boxed-future-isnt-pinned.rs:15:5
19    |
20 LL | fn bar<F: Future<Output=i32> + Send + 'static>(x: F) -> BoxFuture<'static, i32> {
21    |                                                         ----------------------- expected `Pin<Box<(dyn Future<Output = i32> + Send + 'static)>>` because of return type
22 LL |     Box::new(x)
23    |     ^^^^^^^^^^^ expected struct `Pin`, found struct `Box`
24    |
25    = note: expected struct `Pin<Box<(dyn Future<Output = i32> + Send + 'static)>>`
26               found struct `Box<F>`
27    = help: use `Box::pin`
28
29 error[E0308]: mismatched types
30   --> $DIR/expected-boxed-future-isnt-pinned.rs:19:14
31    |
32 LL | fn baz<F: Future<Output=i32> + Send + 'static>(x: F) -> BoxFuture<'static, i32> {
33    |        - this type parameter
34 LL |     Pin::new(x)
35    |     -------- ^ expected struct `Box`, found type parameter `F`
36    |     |
37    |     arguments to this function are incorrect
38    |     help: use `Box::pin` to pin and box this expression: `Box::pin`
39    |
40    = note:      expected struct `Box<dyn Future<Output = i32> + Send>`
41            found type parameter `F`
42 note: associated function defined here
43   --> $SRC_DIR/core/src/pin.rs:LL:COL
44    |
45 LL |     pub const fn new(pointer: P) -> Pin<P> {
46    |                  ^^^
47
48 error[E0277]: `dyn Future<Output = i32> + Send` cannot be unpinned
49   --> $DIR/expected-boxed-future-isnt-pinned.rs:19:5
50    |
51 LL |     Pin::new(x)
52    |     ^^^^^^^^ the trait `Unpin` is not implemented for `dyn Future<Output = i32> + Send`
53    |
54    = note: consider using `Box::pin`
55 note: required by a bound in `Pin::<P>::new`
56   --> $SRC_DIR/core/src/pin.rs:LL:COL
57    |
58 LL | impl<P: Deref<Target: Unpin>> Pin<P> {
59    |                       ^^^^^ required by this bound in `Pin::<P>::new`
60
61 error[E0277]: `dyn Future<Output = i32> + Send` cannot be unpinned
62   --> $DIR/expected-boxed-future-isnt-pinned.rs:24:5
63    |
64 LL |     Pin::new(Box::new(x))
65    |     ^^^^^^^^ the trait `Unpin` is not implemented for `dyn Future<Output = i32> + Send`
66    |
67    = note: consider using `Box::pin`
68 note: required by a bound in `Pin::<P>::new`
69   --> $SRC_DIR/core/src/pin.rs:LL:COL
70    |
71 LL | impl<P: Deref<Target: Unpin>> Pin<P> {
72    |                       ^^^^^ required by this bound in `Pin::<P>::new`
73
74 error[E0308]: mismatched types
75   --> $DIR/expected-boxed-future-isnt-pinned.rs:28:5
76    |
77 LL |   fn zap() -> BoxFuture<'static, i32> {
78    |               ----------------------- expected `Pin<Box<(dyn Future<Output = i32> + Send + 'static)>>` because of return type
79 LL | /     async {
80 LL | |         42
81 LL | |     }
82    | |_____^ expected struct `Pin`, found opaque type
83    |
84   ::: $SRC_DIR/core/src/future/mod.rs:LL:COL
85    |
86 LL |   pub const fn from_generator<T>(gen: T) -> impl Future<Output = T::Return>
87    |                                             ------------------------------- the found opaque type
88    |
89    = note:   expected struct `Pin<Box<(dyn Future<Output = i32> + Send + 'static)>>`
90            found opaque type `impl Future`
91 help: you need to pin and box this expression
92    |
93 LL ~     Box::pin(async {
94 LL |         42
95 LL ~     })
96    |
97
98 error: aborting due to 6 previous errors
99
100 Some errors have detailed explanations: E0277, E0308.
101 For more information about an error, try `rustc --explain E0277`.