summaryrefslogtreecommitdiffstats
path: root/tests/ui/suggestions/expected-boxed-future-isnt-pinned.stderr
blob: 7c81825e576491d6e089cf69310baf59f2d02679 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
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::<P>::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::<P>::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`.