error[E0308]: mismatched types --> $DIR/expected-boxed-future-isnt-pinned.rs:11:5 | LL | fn foo + Send + 'static>(x: F) -> BoxFuture<'static, i32> { | - this type parameter ----------------------- expected `std::pin::Pin + std::marker::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 struct `std::pin::Pin`, found type parameter `F` | help: you need to pin and box this expression: `Box::pin(x)` | = note: expected struct `std::pin::Pin + std::marker::Send + 'static)>>` found type parameter `F` error[E0308]: mismatched types --> $DIR/expected-boxed-future-isnt-pinned.rs:18:5 | LL | fn bar + Send + 'static>(x: F) -> BoxFuture<'static, i32> { | ----------------------- expected `std::pin::Pin + std::marker::Send + 'static)>>` because of return type LL | Box::new(x) | ^^^^^^^^^^^ expected struct `std::pin::Pin`, found struct `std::boxed::Box` | = note: expected struct `std::pin::Pin + std::marker::Send + 'static)>>` found struct `std::boxed::Box` = help: use `Box::pin` error[E0308]: mismatched types --> $DIR/expected-boxed-future-isnt-pinned.rs:22:14 | LL | fn baz + Send + 'static>(x: F) -> BoxFuture<'static, i32> { | - this type parameter LL | Pin::new(x) | ^ | | | expected struct `std::boxed::Box`, found type parameter `F` | help: store this in the heap by calling `Box::new`: `Box::new(x)` | = note: expected struct `std::boxed::Box + std::marker::Send>` found type parameter `F` = note: for more on the distinction between the stack and the heap, read https://doc.rust-lang.org/book/ch15-01-box.html, https://doc.rust-lang.org/rust-by-example/std/box.html, and https://doc.rust-lang.org/std/boxed/index.html error[E0277]: `dyn std::future::Future + std::marker::Send` cannot be unpinned --> $DIR/expected-boxed-future-isnt-pinned.rs:22:5 | LL | Pin::new(x) | ^^^^^^^^ the trait `std::marker::Unpin` is not implemented for `dyn std::future::Future + std::marker::Send` | = note: consider using `Box::pin` = note: required by `std::pin::Pin::

::new` error[E0277]: `dyn std::future::Future + std::marker::Send` cannot be unpinned --> $DIR/expected-boxed-future-isnt-pinned.rs:27:5 | LL | Pin::new(Box::new(x)) | ^^^^^^^^ the trait `std::marker::Unpin` is not implemented for `dyn std::future::Future + std::marker::Send` | = note: consider using `Box::pin` = note: required by `std::pin::Pin::

::new` error[E0308]: mismatched types --> $DIR/expected-boxed-future-isnt-pinned.rs:31:5 | LL | fn zap() -> BoxFuture<'static, i32> { | ----------------------- expected `std::pin::Pin + std::marker::Send + 'static)>>` because of return type LL | / async { LL | | 42 LL | | } | |_____^ expected struct `std::pin::Pin`, found opaque type | ::: $SRC_DIR/core/src/future/mod.rs:LL:COL | LL | pub const fn from_generator(gen: T) -> impl Future | ------------------------------- the found opaque type | = note: expected struct `std::pin::Pin + std::marker::Send + 'static)>>` found opaque type `impl std::future::Future` 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`.