mirror of
https://github.com/rust-lang/rust.git
synced 2024-11-30 18:53:39 +00:00
107 lines
3.9 KiB
Plaintext
107 lines
3.9 KiB
Plaintext
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<()>`
|
|
note: future is not `Send` as this value is used across an await
|
|
--> $DIR/async-await-let-else.rs:11:14
|
|
|
|
|
LL | let r = Rc::new(());
|
|
| - has type `Rc<()>` which is not `Send`
|
|
LL | bar().await
|
|
| ^^^^^^ await occurs here, with `r` maybe used later
|
|
LL | };
|
|
| - `r` is later dropped here
|
|
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[E0277]: `Rc<()>` cannot be sent between threads safely
|
|
--> $DIR/async-await-let-else.rs:50:13
|
|
|
|
|
LL | async fn foo2(x: Option<bool>) {
|
|
| - within this `impl Future<Output = ()>`
|
|
...
|
|
LL | is_send(foo2(Some(true)));
|
|
| ------- ^^^^^^^^^^^^^^^^ `Rc<()>` cannot be sent between threads safely
|
|
| |
|
|
| required by a bound introduced by this call
|
|
|
|
|
= help: within `impl Future<Output = ()>`, the trait `Send` is not implemented for `Rc<()>`
|
|
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: `ResumeTy`, `Option<bool>`, `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 | | }
|
|
| |_^
|
|
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<()>`
|
|
note: future is not `Send` as this value is used across an await
|
|
--> $DIR/async-await-let-else.rs:33:28
|
|
|
|
|
LL | (Rc::new(()), bar().await);
|
|
| ----------- ^^^^^^ - `Rc::new(())` is later dropped here
|
|
| | |
|
|
| | await occurs here, with `Rc::new(())` maybe used later
|
|
| 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<()>`
|
|
note: future is not `Send` as this value is used across an await
|
|
--> $DIR/async-await-let-else.rs:41:14
|
|
|
|
|
LL | let r = Rc::new(());
|
|
| - has type `Rc<()>` which is not `Send`
|
|
LL | bar().await;
|
|
| ^^^^^^ await occurs here, with `r` maybe used later
|
|
...
|
|
LL | };
|
|
| - `r` is later dropped here
|
|
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
|
|
|
|
For more information about this error, try `rustc --explain E0277`.
|