| error: coroutine cannot be sent between threads safely | |
| --> $DIR/issue-68112.rs:40:5 | |
| | | |
| LL | require_send(send_gen); | |
| | ^^^^^^^^^^^^^^^^^^^^^^ coroutine is not `Send` | |
| | | |
| = help: the trait `Sync` is not implemented for `RefCell<i32>` | |
| = note: if you want to do aliasing and mutation between multiple threads, use `std::sync::RwLock` instead | |
| note: coroutine is not `Send` as this value is used across a yield | |
| --> $DIR/issue-68112.rs:36:9 | |
| | | |
| LL | let _non_send_gen = make_non_send_coroutine(); | |
| | ------------- has type `impl Coroutine<Return = Arc<RefCell<i32>>>` which is not `Send` | |
| LL | | |
| LL | yield; | |
| | ^^^^^ yield occurs here, with `_non_send_gen` maybe used later | |
| note: required by a bound in `require_send` | |
| --> $DIR/issue-68112.rs:22:25 | |
| | | |
| LL | fn require_send(_: impl Send) {} | |
| | ^^^^ required by this bound in `require_send` | |
| error[E0277]: `RefCell<i32>` cannot be shared between threads safely | |
| --> $DIR/issue-68112.rs:64:5 | |
| | | |
| LL | require_send(send_gen); | |
| | ^^^^^^^^^^^^^^^^^^^^^^ `RefCell<i32>` cannot be shared between threads safely | |
| | | |
| = help: the trait `Sync` is not implemented for `RefCell<i32>` | |
| = note: if you want to do aliasing and mutation between multiple threads, use `std::sync::RwLock` instead | |
| = note: required for `Arc<RefCell<i32>>` to implement `Send` | |
| note: required because it's used within this coroutine | |
| --> $DIR/issue-68112.rs:49:18 | |
| | | |
| LL | #[coroutine] || { | |
| | ^^ | |
| note: required because it appears within the type `impl Coroutine<Return = Arc<RefCell<i32>>>` | |
| --> $DIR/issue-68112.rs:46:30 | |
| | | |
| LL | pub fn make_gen2<T>(t: T) -> impl Coroutine<Return = T> { | |
| | ^^^^^^^^^^^^^^^^^^^^^^^^^^ | |
| note: required because it appears within the type `impl Coroutine<Return = Arc<RefCell<i32>>>` | |
| --> $DIR/issue-68112.rs:54:34 | |
| | | |
| LL | fn make_non_send_coroutine2() -> impl Coroutine<Return = Arc<RefCell<i32>>> { | |
| | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ | |
| note: required because it's used within this coroutine | |
| --> $DIR/issue-68112.rs:60:33 | |
| | | |
| LL | let send_gen = #[coroutine] || { | |
| | ^^ | |
| note: required by a bound in `require_send` | |
| --> $DIR/issue-68112.rs:22:25 | |
| | | |
| LL | fn require_send(_: impl Send) {} | |
| | ^^^^ required by this bound in `require_send` | |
| error: aborting due to 2 previous errors | |
| For more information about this error, try `rustc --explain E0277`. |