error[E0277]: `T` cannot be shared between threads safely --> $DIR/two-traits.rs:11:14 | LL | type X = Self; | ^^^^ `T` cannot be shared between threads safely | note: required by a bound in `Magic::X` --> $DIR/two-traits.rs:8:13 | LL | type X: Trait; | ^^^^^ required by this bound in `Magic::X` help: consider further restricting this bound | LL | impl<T: Magic + std::marker::Sync> Magic for T { | +++++++++++++++++++ error[E0275]: overflow evaluating the requirement `*mut (): Magic` --> $DIR/two-traits.rs:20:5 | LL | wizard::<*mut ()>(); | ^^^^^^^^^^^^^^^^^ | note: required by a bound in `wizard` --> $DIR/two-traits.rs:17:14 | LL | fn wizard<T: Magic>() { check::<<T as Magic>::X>(); } | ^^^^^ required by this bound in `wizard` error: aborting due to 2 previous errors Some errors have detailed explanations: E0275, E0277. For more information about an error, try `rustc --explain E0275`.