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`, the trait `Send` is not implemented for `Rc<()>` = note: use `std::sync::Arc` instead of `std::rc::Rc` note: future is not `Send` as this value is used across an await --> $DIR/async-await-let-else.rs:11:15 | 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) {} | ^^^^ 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) { | - within this `impl Future` ... 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`, the trait `Send` is not implemented for `Rc<()>` = note: use `std::sync::Arc` instead of `std::rc::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) -> ! { | _____________________________^ LL | | panic!() LL | | } | |_^ = note: required because it captures the following types: `ResumeTy`, `Option`, `impl Future`, `()` 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) { | ________________________________^ 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) {} | ^^^^ 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`, the trait `Send` is not implemented for `Rc<()>` = note: use `std::sync::Arc` instead of `std::rc::Rc` note: future is not `Send` as this value is used across an await --> $DIR/async-await-let-else.rs:33:29 | 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) {} | ^^^^ 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`, the trait `Send` is not implemented for `Rc<()>` = note: use `std::sync::Arc` instead of `std::rc::Rc` note: future is not `Send` as this value is used across an await --> $DIR/async-await-let-else.rs:41:15 | 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) {} | ^^^^ required by this bound in `is_send` error: aborting due to 4 previous errors For more information about this error, try `rustc --explain E0277`.