summaryrefslogtreecommitdiffstats
path: root/src/test/ui/suggestions/expected-boxed-future-isnt-pinned.stderr
diff options
context:
space:
mode:
Diffstat (limited to '')
-rw-r--r--src/test/ui/suggestions/expected-boxed-future-isnt-pinned.stderr101
1 files changed, 101 insertions, 0 deletions
diff --git a/src/test/ui/suggestions/expected-boxed-future-isnt-pinned.stderr b/src/test/ui/suggestions/expected-boxed-future-isnt-pinned.stderr
new file mode 100644
index 000000000..71facf57e
--- /dev/null
+++ b/src/test/ui/suggestions/expected-boxed-future-isnt-pinned.stderr
@@ -0,0 +1,101 @@
+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> {
+ | - 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 struct `Pin`, 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 struct `Pin`, found struct `Box`
+ |
+ = 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> {
+ | - this type parameter
+LL | Pin::new(x)
+ | -------- ^ expected struct `Box`, 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
+ |
+LL | pub const fn new(pointer: P) -> Pin<P> {
+ | ^^^
+
+error[E0277]: `dyn Future<Output = i32> + Send` cannot be unpinned
+ --> $DIR/expected-boxed-future-isnt-pinned.rs:19:5
+ |
+LL | Pin::new(x)
+ | ^^^^^^^^ the trait `Unpin` is not implemented for `dyn Future<Output = i32> + Send`
+ |
+ = note: consider using `Box::pin`
+note: required by a bound in `Pin::<P>::new`
+ --> $SRC_DIR/core/src/pin.rs:LL:COL
+ |
+LL | impl<P: Deref<Target: Unpin>> Pin<P> {
+ | ^^^^^ required by this bound in `Pin::<P>::new`
+
+error[E0277]: `dyn Future<Output = i32> + Send` cannot be unpinned
+ --> $DIR/expected-boxed-future-isnt-pinned.rs:24:5
+ |
+LL | Pin::new(Box::new(x))
+ | ^^^^^^^^ the trait `Unpin` is not implemented for `dyn Future<Output = i32> + Send`
+ |
+ = note: consider using `Box::pin`
+note: required by a bound in `Pin::<P>::new`
+ --> $SRC_DIR/core/src/pin.rs:LL:COL
+ |
+LL | impl<P: Deref<Target: Unpin>> Pin<P> {
+ | ^^^^^ required by this bound in `Pin::<P>::new`
+
+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 struct `Pin`, found opaque type
+ |
+ ::: $SRC_DIR/core/src/future/mod.rs:LL:COL
+ |
+LL | pub const fn from_generator<T>(gen: T) -> impl Future<Output = T::Return>
+ | ------------------------------- the found opaque type
+ |
+ = note: expected struct `Pin<Box<(dyn Future<Output = i32> + Send + 'static)>>`
+ found opaque type `impl 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`.