error[E0277]: `Cell` cannot be shared between threads safely --> $DIR/not-send-sync.rs:16:17 | LL | assert_send(|| { | _____-----------_^ | | | | | required by a bound introduced by this call LL | | LL | | drop(&a); LL | | yield; LL | | }); | |_____^ `Cell` cannot be shared between threads safely | = help: the trait `Sync` is not implemented for `Cell` = note: required for `&Cell` to implement `Send` note: required because it's used within this generator --> $DIR/not-send-sync.rs:16:17 | LL | assert_send(|| { | ^^ note: required by a bound in `assert_send` --> $DIR/not-send-sync.rs:7:23 | LL | fn assert_send(_: T) {} | ^^^^ required by this bound in `assert_send` error: generator cannot be shared between threads safely --> $DIR/not-send-sync.rs:9:17 | LL | assert_sync(|| { | _________________^ LL | | LL | | let a = Cell::new(2); LL | | yield; LL | | }); | |_____^ generator is not `Sync` | = help: within `[generator@$DIR/not-send-sync.rs:9:17: 9:19]`, the trait `Sync` is not implemented for `Cell` note: generator is not `Sync` as this value is used across a yield --> $DIR/not-send-sync.rs:12:9 | LL | let a = Cell::new(2); | - has type `Cell` which is not `Sync` LL | yield; | ^^^^^ yield occurs here, with `a` maybe used later LL | }); | - `a` is later dropped here note: required by a bound in `assert_sync` --> $DIR/not-send-sync.rs:6:23 | LL | fn assert_sync(_: T) {} | ^^^^ required by this bound in `assert_sync` error: aborting due to 2 previous errors For more information about this error, try `rustc --explain E0277`.