]> git.lizzy.rs Git - rust.git/blob - src/test/ui/async-await/async-await-let-else.drop-tracking.stderr
Auto merge of #103459 - ChrisDenton:propagate-nulls, r=thomcc
[rust.git] / src / test / ui / async-await / async-await-let-else.drop-tracking.stderr
1 error: future cannot be sent between threads safely
2   --> $DIR/async-await-let-else.rs:48:13
3    |
4 LL |     is_send(foo(Some(true)));
5    |             ^^^^^^^^^^^^^^^ future returned by `foo` is not `Send`
6    |
7    = help: within `impl Future<Output = ()>`, the trait `Send` is not implemented for `Rc<()>`
8 note: future is not `Send` as this value is used across an await
9   --> $DIR/async-await-let-else.rs:11:14
10    |
11 LL |         let r = Rc::new(());
12    |             - has type `Rc<()>` which is not `Send`
13 LL |         bar().await
14    |              ^^^^^^ await occurs here, with `r` maybe used later
15 LL |     };
16    |     - `r` is later dropped here
17 note: required by a bound in `is_send`
18   --> $DIR/async-await-let-else.rs:19:15
19    |
20 LL | fn is_send<T: Send>(_: T) {}
21    |               ^^^^ required by this bound in `is_send`
22
23 error[E0277]: `Rc<()>` cannot be sent between threads safely
24   --> $DIR/async-await-let-else.rs:50:13
25    |
26 LL | async fn foo2(x: Option<bool>) {
27    |                                - within this `impl Future<Output = ()>`
28 ...
29 LL |     is_send(foo2(Some(true)));
30    |     ------- ^^^^^^^^^^^^^^^^ `Rc<()>` cannot be sent between threads safely
31    |     |
32    |     required by a bound introduced by this call
33    |
34    = help: within `impl Future<Output = ()>`, the trait `Send` is not implemented for `Rc<()>`
35 note: required because it's used within this `async fn` body
36   --> $DIR/async-await-let-else.rs:27:29
37    |
38 LL |   async fn bar2<T>(_: T) -> ! {
39    |  _____________________________^
40 LL | |     panic!()
41 LL | | }
42    | |_^
43    = note: required because it captures the following types: `&mut Context<'_>`, `Option<bool>`, `impl Future<Output = !>`, `()`
44 note: required because it's used within this `async fn` body
45   --> $DIR/async-await-let-else.rs:21:32
46    |
47 LL |   async fn foo2(x: Option<bool>) {
48    |  ________________________________^
49 LL | |     let Some(_) = x else {
50 LL | |         bar2(Rc::new(())).await
51 LL | |     };
52 LL | | }
53    | |_^
54 note: required by a bound in `is_send`
55   --> $DIR/async-await-let-else.rs:19:15
56    |
57 LL | fn is_send<T: Send>(_: T) {}
58    |               ^^^^ required by this bound in `is_send`
59
60 error: future cannot be sent between threads safely
61   --> $DIR/async-await-let-else.rs:52:13
62    |
63 LL |     is_send(foo3(Some(true)));
64    |             ^^^^^^^^^^^^^^^^ future returned by `foo3` is not `Send`
65    |
66    = help: within `impl Future<Output = ()>`, the trait `Send` is not implemented for `Rc<()>`
67 note: future is not `Send` as this value is used across an await
68   --> $DIR/async-await-let-else.rs:33:28
69    |
70 LL |         (Rc::new(()), bar().await);
71    |          -----------       ^^^^^^ await occurs here, with `Rc::new(())` maybe used later
72    |          |
73    |          has type `Rc<()>` which is not `Send`
74 note: `Rc::new(())` is later dropped here
75   --> $DIR/async-await-let-else.rs:33:35
76    |
77 LL |         (Rc::new(()), bar().await);
78    |                                   ^
79 note: required by a bound in `is_send`
80   --> $DIR/async-await-let-else.rs:19:15
81    |
82 LL | fn is_send<T: Send>(_: T) {}
83    |               ^^^^ required by this bound in `is_send`
84
85 error: future cannot be sent between threads safely
86   --> $DIR/async-await-let-else.rs:54:13
87    |
88 LL |     is_send(foo4(Some(true)));
89    |             ^^^^^^^^^^^^^^^^ future returned by `foo4` is not `Send`
90    |
91    = help: within `impl Future<Output = ()>`, the trait `Send` is not implemented for `Rc<()>`
92 note: future is not `Send` as this value is used across an await
93   --> $DIR/async-await-let-else.rs:41:14
94    |
95 LL |         let r = Rc::new(());
96    |             - has type `Rc<()>` which is not `Send`
97 LL |         bar().await;
98    |              ^^^^^^ await occurs here, with `r` maybe used later
99 ...
100 LL |     };
101    |     - `r` is later dropped here
102 note: required by a bound in `is_send`
103   --> $DIR/async-await-let-else.rs:19:15
104    |
105 LL | fn is_send<T: Send>(_: T) {}
106    |               ^^^^ required by this bound in `is_send`
107
108 error: aborting due to 4 previous errors
109
110 For more information about this error, try `rustc --explain E0277`.