1 error[E0310]: the parameter type `T` may not live long enough
2 --> $DIR/impl_bounds.rs:15:5
4 LL | type A<'a> where Self: 'static = (&'a ());
5 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
7 = help: consider adding an explicit lifetime bound `T: 'static`...
8 = note: ...so that the type `Fooy<T>` will meet its required lifetime bounds
10 error[E0478]: lifetime bound not satisfied
11 --> $DIR/impl_bounds.rs:17:5
13 LL | type B<'a, 'b> where 'b: 'a = (&'a(), &'b ());
14 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
16 note: lifetime parameter instantiated with the lifetime `'b` as defined on the associated item at 17:16
17 --> $DIR/impl_bounds.rs:17:16
19 LL | type B<'a, 'b> where 'b: 'a = (&'a(), &'b ());
21 note: but lifetime parameter must outlive the lifetime `'a` as defined on the associated item at 17:12
22 --> $DIR/impl_bounds.rs:17:12
24 LL | type B<'a, 'b> where 'b: 'a = (&'a(), &'b ());
27 error[E0478]: lifetime bound not satisfied
28 --> $DIR/impl_bounds.rs:17:5
30 LL | type B<'a, 'b> where 'b: 'a = (&'a(), &'b ());
31 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
33 note: lifetime parameter instantiated with the lifetime `'a` as defined on the associated item at 17:12
34 --> $DIR/impl_bounds.rs:17:12
36 LL | type B<'a, 'b> where 'b: 'a = (&'a(), &'b ());
38 note: but lifetime parameter must outlive the lifetime `'b` as defined on the associated item at 17:16
39 --> $DIR/impl_bounds.rs:17:16
41 LL | type B<'a, 'b> where 'b: 'a = (&'a(), &'b ());
44 error[E0277]: the trait bound `T: Copy` is not satisfied
45 --> $DIR/impl_bounds.rs:20:5
47 LL | type C where Self: Copy = String;
48 | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Copy` is not implemented for `T`
50 note: required because of the requirements on the impl of `Copy` for `Fooy<T>`
51 --> $DIR/impl_bounds.rs:11:10
53 LL | #[derive(Copy, Clone)]
55 note: the requirement `Fooy<T>: Copy` appears on the associated impl type `C` but not on the corresponding associated trait type
56 --> $DIR/impl_bounds.rs:7:5
61 LL | type C where Self: Clone;
62 | ^^^^^^^^^^^^^^^^^^^^^^^^^ this trait associated type doesn't have the requirement `Fooy<T>: Copy`
63 = note: this error originates in the derive macro `Copy` (in Nightly builds, run with -Z macro-backtrace for more info)
64 help: consider restricting type parameter `T`
66 LL | impl<T: std::marker::Copy> Foo for Fooy<T> {
69 error[E0277]: the trait bound `T: Copy` is not satisfied
70 --> $DIR/impl_bounds.rs:22:5
72 LL | fn d() where Self: Copy {}
73 | ^^^^^^^^^^^^^^^^^^^^^^^ the trait `Copy` is not implemented for `T`
75 note: required because of the requirements on the impl of `Copy` for `Fooy<T>`
76 --> $DIR/impl_bounds.rs:11:10
78 LL | #[derive(Copy, Clone)]
80 note: the requirement `Fooy<T>: Copy` appears on the impl method `d` but not on the corresponding trait method
81 --> $DIR/impl_bounds.rs:8:8
86 LL | fn d() where Self: Clone;
87 | ^ this trait method doesn't have the requirement `Fooy<T>: Copy`
88 = note: this error originates in the derive macro `Copy` (in Nightly builds, run with -Z macro-backtrace for more info)
89 help: consider restricting type parameter `T`
91 LL | impl<T: std::marker::Copy> Foo for Fooy<T> {
94 error: aborting due to 5 previous errors
96 Some errors have detailed explanations: E0277, E0310, E0478.
97 For more information about an error, try `rustc --explain E0277`.