| error[E0277]: `T` cannot be shared between threads safely |
| --> $DIR/phantom-auto-trait.rs:21:12 |
| | |
| LL | is_zen(x) |
| | ------ ^ `T` cannot be shared between threads safely |
| | | |
| | required by a bound introduced by this call |
| | |
| note: required for `&T` to implement `Zen` |
| --> $DIR/phantom-auto-trait.rs:10:24 |
| | |
| LL | unsafe impl<'a, T: 'a> Zen for &'a T where T: Sync {} |
| | ^^^ ^^^^^ ---- unsatisfied trait bound introduced here |
| note: required because it appears within the type `PhantomData<&T>` |
| --> $SRC_DIR/core/src/marker.rs:LL:COL |
| note: required because it appears within the type `Guard<'_, T>` |
| --> $DIR/phantom-auto-trait.rs:12:8 |
| | |
| LL | struct Guard<'a, T: 'a> { |
| | ^^^^^ |
| note: required by a bound in `is_zen` |
| --> $DIR/phantom-auto-trait.rs:18:14 |
| | |
| LL | fn is_zen<T: Zen>(_: T) {} |
| | ^^^ required by this bound in `is_zen` |
| help: consider restricting type parameter `T` |
| | |
| LL | fn not_sync<T: std::marker::Sync>(x: Guard<T>) { |
| | +++++++++++++++++++ |
| |
| error[E0277]: `T` cannot be shared between threads safely |
| --> $DIR/phantom-auto-trait.rs:26:12 |
| | |
| LL | is_zen(x) |
| | ------ ^ `T` cannot be shared between threads safely |
| | | |
| | required by a bound introduced by this call |
| | |
| note: required for `&T` to implement `Zen` |
| --> $DIR/phantom-auto-trait.rs:10:24 |
| | |
| LL | unsafe impl<'a, T: 'a> Zen for &'a T where T: Sync {} |
| | ^^^ ^^^^^ ---- unsatisfied trait bound introduced here |
| note: required because it appears within the type `PhantomData<&T>` |
| --> $SRC_DIR/core/src/marker.rs:LL:COL |
| note: required because it appears within the type `Guard<'_, T>` |
| --> $DIR/phantom-auto-trait.rs:12:8 |
| | |
| LL | struct Guard<'a, T: 'a> { |
| | ^^^^^ |
| note: required because it appears within the type `Nested<Guard<'_, T>>` |
| --> $DIR/phantom-auto-trait.rs:16:8 |
| | |
| LL | struct Nested<T>(T); |
| | ^^^^^^ |
| note: required by a bound in `is_zen` |
| --> $DIR/phantom-auto-trait.rs:18:14 |
| | |
| LL | fn is_zen<T: Zen>(_: T) {} |
| | ^^^ required by this bound in `is_zen` |
| help: consider restricting type parameter `T` |
| | |
| LL | fn nested_not_sync<T: std::marker::Sync>(x: Nested<Guard<T>>) { |
| | +++++++++++++++++++ |
| |
| error: aborting due to 2 previous errors |
| |
| For more information about this error, try `rustc --explain E0277`. |