mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-23 15:23:46 +00:00
94 lines
3.8 KiB
Plaintext
94 lines
3.8 KiB
Plaintext
error[E0308]: mismatched types
|
|
--> $DIR/expected-boxed-future-isnt-pinned.rs:11:5
|
|
|
|
|
LL | fn foo<F: Future<Output=i32> + Send + 'static>(x: F) -> BoxFuture<'static, i32> {
|
|
| - found this type parameter ----------------------- expected `Pin<Box<(dyn Future<Output = i32> + Send + 'static)>>` because of return type
|
|
LL | // We could instead use an `async` block, but this way we have no std spans.
|
|
LL | x
|
|
| ^ expected `Pin<Box<...>>`, found type parameter `F`
|
|
|
|
|
= note: expected struct `Pin<Box<(dyn Future<Output = i32> + Send + 'static)>>`
|
|
found type parameter `F`
|
|
help: you need to pin and box this expression
|
|
|
|
|
LL | Box::pin(x)
|
|
| +++++++++ +
|
|
|
|
error[E0308]: mismatched types
|
|
--> $DIR/expected-boxed-future-isnt-pinned.rs:15:5
|
|
|
|
|
LL | fn bar<F: Future<Output=i32> + Send + 'static>(x: F) -> BoxFuture<'static, i32> {
|
|
| ----------------------- expected `Pin<Box<(dyn Future<Output = i32> + Send + 'static)>>` because of return type
|
|
LL | Box::new(x)
|
|
| ^^^^^^^^^^^ expected `Pin<Box<...>>`, found `Box<F>`
|
|
|
|
|
= note: expected struct `Pin<Box<(dyn Future<Output = i32> + Send + 'static)>>`
|
|
found struct `Box<F>`
|
|
= help: use `Box::pin`
|
|
|
|
error[E0308]: mismatched types
|
|
--> $DIR/expected-boxed-future-isnt-pinned.rs:19:14
|
|
|
|
|
LL | fn baz<F: Future<Output=i32> + Send + 'static>(x: F) -> BoxFuture<'static, i32> {
|
|
| - found this type parameter
|
|
LL | Pin::new(x)
|
|
| -------- ^ expected `Box<dyn Future<Output = ...> + Send>`, found type parameter `F`
|
|
| |
|
|
| arguments to this function are incorrect
|
|
| help: use `Box::pin` to pin and box this expression: `Box::pin`
|
|
|
|
|
= note: expected struct `Box<dyn Future<Output = i32> + Send>`
|
|
found type parameter `F`
|
|
note: associated function defined here
|
|
--> $SRC_DIR/core/src/pin.rs:LL:COL
|
|
|
|
error[E0277]: `dyn Future<Output = i32> + Send` cannot be unpinned
|
|
--> $DIR/expected-boxed-future-isnt-pinned.rs:19:14
|
|
|
|
|
LL | Pin::new(x)
|
|
| -------- ^ the trait `Unpin` is not implemented for `dyn Future<Output = i32> + Send`
|
|
| |
|
|
| required by a bound introduced by this call
|
|
|
|
|
= note: consider using the `pin!` macro
|
|
consider using `Box::pin` if you need to access the pinned value outside of the current scope
|
|
note: required by a bound in `Pin::<Ptr>::new`
|
|
--> $SRC_DIR/core/src/pin.rs:LL:COL
|
|
|
|
error[E0277]: `dyn Future<Output = i32> + Send` cannot be unpinned
|
|
--> $DIR/expected-boxed-future-isnt-pinned.rs:24:14
|
|
|
|
|
LL | Pin::new(Box::new(x))
|
|
| -------- ^^^^^^^^^^^ the trait `Unpin` is not implemented for `dyn Future<Output = i32> + Send`
|
|
| |
|
|
| required by a bound introduced by this call
|
|
|
|
|
= note: consider using the `pin!` macro
|
|
consider using `Box::pin` if you need to access the pinned value outside of the current scope
|
|
note: required by a bound in `Pin::<Ptr>::new`
|
|
--> $SRC_DIR/core/src/pin.rs:LL:COL
|
|
|
|
error[E0308]: mismatched types
|
|
--> $DIR/expected-boxed-future-isnt-pinned.rs:28:5
|
|
|
|
|
LL | fn zap() -> BoxFuture<'static, i32> {
|
|
| ----------------------- expected `Pin<Box<(dyn Future<Output = i32> + Send + 'static)>>` because of return type
|
|
LL | / async {
|
|
LL | | 42
|
|
LL | | }
|
|
| |_____^ expected `Pin<Box<...>>`, found `async` block
|
|
|
|
|
= note: expected struct `Pin<Box<(dyn Future<Output = i32> + Send + 'static)>>`
|
|
found `async` block `{async block@$DIR/expected-boxed-future-isnt-pinned.rs:28:5: 30:6}`
|
|
help: you need to pin and box this expression
|
|
|
|
|
LL ~ Box::pin(async {
|
|
LL | 42
|
|
LL ~ })
|
|
|
|
|
|
|
error: aborting due to 6 previous errors
|
|
|
|
Some errors have detailed explanations: E0277, E0308.
|
|
For more information about an error, try `rustc --explain E0277`.
|