]> git.lizzy.rs Git - rust.git/blob - tests/ui/suggestions/expected-boxed-future-isnt-pinned.stderr
Rollup merge of #106644 - alexcrichton:update-wasi-toolchain, r=cuviper
[rust.git] / tests / 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 error[E0277]: `dyn Future<Output = i32> + Send` cannot be unpinned
46   --> $DIR/expected-boxed-future-isnt-pinned.rs:19:14
47    |
48 LL |     Pin::new(x)
49    |     -------- ^ the trait `Unpin` is not implemented for `dyn Future<Output = i32> + Send`
50    |     |
51    |     required by a bound introduced by this call
52    |
53    = note: consider using `Box::pin`
54 note: required by a bound in `Pin::<P>::new`
55   --> $SRC_DIR/core/src/pin.rs:LL:COL
56
57 error[E0277]: `dyn Future<Output = i32> + Send` cannot be unpinned
58   --> $DIR/expected-boxed-future-isnt-pinned.rs:24:14
59    |
60 LL |     Pin::new(Box::new(x))
61    |     -------- ^^^^^^^^^^^ the trait `Unpin` is not implemented for `dyn Future<Output = i32> + Send`
62    |     |
63    |     required by a bound introduced by this call
64    |
65    = note: consider using `Box::pin`
66 note: required by a bound in `Pin::<P>::new`
67   --> $SRC_DIR/core/src/pin.rs:LL:COL
68
69 error[E0308]: mismatched types
70   --> $DIR/expected-boxed-future-isnt-pinned.rs:28:5
71    |
72 LL | /     async {
73 LL | |         42
74 LL | |     }
75    | |     ^
76    | |     |
77    | |_____expected struct `Pin`, found `async` block
78    |       arguments to this function are incorrect
79    |
80    = note:     expected struct `Pin<Box<dyn Future<Output = i32> + Send>>`
81            found `async` block `[async block@$DIR/expected-boxed-future-isnt-pinned.rs:28:5: 30:6]`
82 note: function defined here
83   --> $SRC_DIR/core/src/future/mod.rs:LL:COL
84 help: you need to pin and box this expression
85    |
86 LL ~     Box::pin(async {
87 LL |         42
88 LL ~     })
89    |
90
91 error: aborting due to 6 previous errors
92
93 Some errors have detailed explanations: E0277, E0308.
94 For more information about an error, try `rustc --explain E0277`.