]>
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 |
f2b60f7d | 49 | --> $DIR/expected-boxed-future-isnt-pinned.rs:19:14 |
f9f354fc XL |
50 | | |
51 | LL | Pin::new(x) | |
f2b60f7d FG |
52 | | -------- ^ the trait `Unpin` is not implemented for `dyn Future<Output = i32> + Send` |
53 | | | | |
54 | | required by a bound introduced by this call | |
f9f354fc | 55 | | |
cdc7bbd5 | 56 | = note: consider using `Box::pin` |
3c0e092e | 57 | note: required by a bound in `Pin::<P>::new` |
136023e0 XL |
58 | --> $SRC_DIR/core/src/pin.rs:LL:COL |
59 | | | |
3c0e092e XL |
60 | LL | impl<P: Deref<Target: Unpin>> Pin<P> { |
61 | | ^^^^^ required by this bound in `Pin::<P>::new` | |
f9f354fc | 62 | |
1b1a35ee | 63 | error[E0277]: `dyn Future<Output = i32> + Send` cannot be unpinned |
f2b60f7d | 64 | --> $DIR/expected-boxed-future-isnt-pinned.rs:24:14 |
f9f354fc XL |
65 | | |
66 | LL | Pin::new(Box::new(x)) | |
f2b60f7d FG |
67 | | -------- ^^^^^^^^^^^ the trait `Unpin` is not implemented for `dyn Future<Output = i32> + Send` |
68 | | | | |
69 | | required by a bound introduced by this call | |
f9f354fc | 70 | | |
cdc7bbd5 | 71 | = note: consider using `Box::pin` |
3c0e092e | 72 | note: required by a bound in `Pin::<P>::new` |
136023e0 XL |
73 | --> $SRC_DIR/core/src/pin.rs:LL:COL |
74 | | | |
3c0e092e XL |
75 | LL | impl<P: Deref<Target: Unpin>> Pin<P> { |
76 | | ^^^^^ required by this bound in `Pin::<P>::new` | |
f9f354fc XL |
77 | |
78 | error[E0308]: mismatched types | |
c295e0f8 | 79 | --> $DIR/expected-boxed-future-isnt-pinned.rs:28:5 |
f9f354fc | 80 | | |
f9f354fc XL |
81 | LL | / async { |
82 | LL | | 42 | |
83 | LL | | } | |
487cf647 FG |
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 | | ^^^^^^^^^^^^^^^ | |
f9f354fc XL |
96 | help: you need to pin and box this expression |
97 | | | |
94222f64 | 98 | LL ~ Box::pin(async { |
f9f354fc | 99 | LL | 42 |
94222f64 | 100 | LL ~ }) |
f9f354fc XL |
101 | | |
102 | ||
103 | error: aborting due to 6 previous errors | |
74b04a01 | 104 | |
f9f354fc XL |
105 | Some errors have detailed explanations: E0277, E0308. |
106 | For more information about an error, try `rustc --explain E0277`. |