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