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