error[E0277]: `*mut ()` cannot be shared between threads safely --> $DIR/issue-70935-complex-spans.rs:18:23 | LL | fn foo(x: NotSync) -> impl Future + Send { | ^^^^^^^^^^^^^^^^^^ `*mut ()` cannot be shared between threads safely | = help: within `NotSync`, the trait `Sync` is not implemented for `*mut ()` note: required because it appears within the type `PhantomData<*mut ()>` --> $SRC_DIR/core/src/marker.rs:LL:COL note: required because it appears within the type `NotSync` --> $DIR/issue-70935-complex-spans.rs:12:8 | LL | struct NotSync(PhantomData<*mut ()>); | ^^^^^^^ = note: required for `&NotSync` to implement `Send` note: required because it's used within this closure --> $DIR/issue-70935-complex-spans.rs:22:13 | LL | baz(|| async { | ^^ note: required because it's used within this `async fn` body --> $DIR/issue-70935-complex-spans.rs:15:67 | LL | async fn baz(_c: impl FnMut() -> T) where T: Future { | ___________________________________________________________________^ LL | | } | |_^ = note: required because it captures the following types: `impl Future` note: required because it's used within this `async` block --> $DIR/issue-70935-complex-spans.rs:21:5 | LL | / async move { LL | | baz(|| async { LL | | foo(x.clone()); LL | | }).await; LL | | } | |_____^ error: aborting due to previous error For more information about this error, try `rustc --explain E0277`.