2022-10-01 05:19:31 -05:00
|
|
|
error: future cannot be sent between threads safely
|
|
|
|
--> $DIR/async-await-let-else.rs:48:13
|
|
|
|
|
|
|
|
|
LL | is_send(foo(Some(true)));
|
|
|
|
| ^^^^^^^^^^^^^^^ future returned by `foo` is not `Send`
|
|
|
|
|
|
|
|
|
= help: within `impl Future<Output = ()>`, the trait `Send` is not implemented for `Rc<()>`
|
2021-09-14 10:44:08 -05:00
|
|
|
= note: use `std::sync::Arc` instead of `std::rc::Rc`
|
2022-10-01 05:19:31 -05:00
|
|
|
note: future is not `Send` as this value is used across an await
|
2023-04-25 13:59:16 -05:00
|
|
|
--> $DIR/async-await-let-else.rs:11:15
|
2022-10-01 05:19:31 -05:00
|
|
|
|
|
|
|
|
LL | let r = Rc::new(());
|
|
|
|
| - has type `Rc<()>` which is not `Send`
|
|
|
|
LL | bar().await
|
2023-04-25 13:59:16 -05:00
|
|
|
| ^^^^^ await occurs here, with `r` maybe used later
|
2022-10-01 05:19:31 -05:00
|
|
|
note: required by a bound in `is_send`
|
|
|
|
--> $DIR/async-await-let-else.rs:19:15
|
|
|
|
|
|
|
|
|
LL | fn is_send<T: Send>(_: T) {}
|
|
|
|
| ^^^^ required by this bound in `is_send`
|
|
|
|
|
2023-01-25 21:51:26 -06:00
|
|
|
error[E0277]: `Rc<()>` cannot be sent between threads safely
|
2022-10-01 05:19:31 -05:00
|
|
|
--> $DIR/async-await-let-else.rs:50:13
|
|
|
|
|
|
2023-01-25 21:51:26 -06:00
|
|
|
LL | async fn foo2(x: Option<bool>) {
|
|
|
|
| - within this `impl Future<Output = ()>`
|
|
|
|
...
|
2022-10-01 05:19:31 -05:00
|
|
|
LL | is_send(foo2(Some(true)));
|
2023-01-25 21:51:26 -06:00
|
|
|
| ------- ^^^^^^^^^^^^^^^^ `Rc<()>` cannot be sent between threads safely
|
|
|
|
| |
|
|
|
|
| required by a bound introduced by this call
|
2022-10-01 05:19:31 -05:00
|
|
|
|
|
|
|
|
= help: within `impl Future<Output = ()>`, the trait `Send` is not implemented for `Rc<()>`
|
2021-09-14 10:44:08 -05:00
|
|
|
= note: use `std::sync::Arc` instead of `std::rc::Rc`
|
2023-01-25 21:51:26 -06:00
|
|
|
note: required because it's used within this `async fn` body
|
|
|
|
--> $DIR/async-await-let-else.rs:27:29
|
|
|
|
|
|
|
|
|
LL | async fn bar2<T>(_: T) -> ! {
|
|
|
|
| _____________________________^
|
|
|
|
LL | | panic!()
|
|
|
|
LL | | }
|
|
|
|
| |_^
|
|
|
|
= note: required because it captures the following types: `impl Future<Output = !>`
|
|
|
|
note: required because it's used within this `async fn` body
|
|
|
|
--> $DIR/async-await-let-else.rs:21:32
|
|
|
|
|
|
|
|
|
LL | async fn foo2(x: Option<bool>) {
|
|
|
|
| ________________________________^
|
|
|
|
LL | | let Some(_) = x else {
|
|
|
|
LL | | bar2(Rc::new(())).await
|
|
|
|
LL | | };
|
|
|
|
LL | | }
|
|
|
|
| |_^
|
2022-10-01 05:19:31 -05:00
|
|
|
note: required by a bound in `is_send`
|
|
|
|
--> $DIR/async-await-let-else.rs:19:15
|
|
|
|
|
|
|
|
|
LL | fn is_send<T: Send>(_: T) {}
|
|
|
|
| ^^^^ required by this bound in `is_send`
|
|
|
|
|
|
|
|
error: future cannot be sent between threads safely
|
|
|
|
--> $DIR/async-await-let-else.rs:52:13
|
|
|
|
|
|
|
|
|
LL | is_send(foo3(Some(true)));
|
|
|
|
| ^^^^^^^^^^^^^^^^ future returned by `foo3` is not `Send`
|
|
|
|
|
|
|
|
|
= help: within `impl Future<Output = ()>`, the trait `Send` is not implemented for `Rc<()>`
|
2021-09-14 10:44:08 -05:00
|
|
|
= note: use `std::sync::Arc` instead of `std::rc::Rc`
|
2022-10-01 05:19:31 -05:00
|
|
|
note: future is not `Send` as this value is used across an await
|
2023-04-25 13:59:16 -05:00
|
|
|
--> $DIR/async-await-let-else.rs:33:29
|
2022-10-01 05:19:31 -05:00
|
|
|
|
|
|
|
|
LL | (Rc::new(()), bar().await);
|
2023-04-25 13:59:16 -05:00
|
|
|
| ----------- ^^^^^ await occurs here, with `Rc::new(())` maybe used later
|
2023-01-25 21:51:26 -06:00
|
|
|
| |
|
2022-10-01 05:19:31 -05:00
|
|
|
| has type `Rc<()>` which is not `Send`
|
|
|
|
note: required by a bound in `is_send`
|
|
|
|
--> $DIR/async-await-let-else.rs:19:15
|
|
|
|
|
|
|
|
|
LL | fn is_send<T: Send>(_: T) {}
|
|
|
|
| ^^^^ required by this bound in `is_send`
|
|
|
|
|
|
|
|
error: future cannot be sent between threads safely
|
|
|
|
--> $DIR/async-await-let-else.rs:54:13
|
|
|
|
|
|
|
|
|
LL | is_send(foo4(Some(true)));
|
|
|
|
| ^^^^^^^^^^^^^^^^ future returned by `foo4` is not `Send`
|
|
|
|
|
|
|
|
|
= help: within `impl Future<Output = ()>`, the trait `Send` is not implemented for `Rc<()>`
|
2021-09-14 10:44:08 -05:00
|
|
|
= note: use `std::sync::Arc` instead of `std::rc::Rc`
|
2022-10-01 05:19:31 -05:00
|
|
|
note: future is not `Send` as this value is used across an await
|
2023-04-25 13:59:16 -05:00
|
|
|
--> $DIR/async-await-let-else.rs:41:15
|
2022-10-01 05:19:31 -05:00
|
|
|
|
|
|
|
|
LL | let r = Rc::new(());
|
|
|
|
| - has type `Rc<()>` which is not `Send`
|
|
|
|
LL | bar().await;
|
2023-04-25 13:59:16 -05:00
|
|
|
| ^^^^^ await occurs here, with `r` maybe used later
|
2022-10-01 05:19:31 -05:00
|
|
|
note: required by a bound in `is_send`
|
|
|
|
--> $DIR/async-await-let-else.rs:19:15
|
|
|
|
|
|
|
|
|
LL | fn is_send<T: Send>(_: T) {}
|
|
|
|
| ^^^^ required by this bound in `is_send`
|
|
|
|
|
|
|
|
error: aborting due to 4 previous errors
|
|
|
|
|
2023-01-25 21:51:26 -06:00
|
|
|
For more information about this error, try `rustc --explain E0277`.
|