1error: `impl` associated type signature for `A` doesn't match `trait` associated type signature
2  --> $DIR/impl_bounds.rs:15:5
3   |
4LL |     type A<'a> where Self: 'a;
5   |     -------------------------- expected
6...
7LL |     type A<'a> where Self: 'static = (&'a ());
8   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ found
9
10error: `impl` associated type signature for `B` doesn't match `trait` associated type signature
11  --> $DIR/impl_bounds.rs:17:5
12   |
13LL |     type B<'a, 'b> where 'a: 'b;
14   |     ---------------------------- expected
15...
16LL |     type B<'a, 'b> where 'b: 'a = (&'a(), &'b ());
17   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ found
18
19error[E0478]: lifetime bound not satisfied
20  --> $DIR/impl_bounds.rs:17:5
21   |
22LL |     type B<'a, 'b> where 'b: 'a = (&'a(), &'b ());
23   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
24   |
25note: lifetime parameter instantiated with the lifetime `'a` as defined here
26  --> $DIR/impl_bounds.rs:17:12
27   |
28LL |     type B<'a, 'b> where 'b: 'a = (&'a(), &'b ());
29   |            ^^
30note: but lifetime parameter must outlive the lifetime `'b` as defined here
31  --> $DIR/impl_bounds.rs:17:16
32   |
33LL |     type B<'a, 'b> where 'b: 'a = (&'a(), &'b ());
34   |                ^^
35
36error[E0277]: the trait bound `T: Copy` is not satisfied
37  --> $DIR/impl_bounds.rs:20:5
38   |
39LL |     type C where Self: Copy = String;
40   |     ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ the trait `Copy` is not implemented for `T`
41   |
42note: required because of the requirements on the impl of `Copy` for `Fooy<T>`
43  --> $DIR/impl_bounds.rs:11:10
44   |
45LL | #[derive(Copy, Clone)]
46   |          ^^^^
47note: the requirement `Fooy<T>: Copy` appears on the associated impl type `C` but not on the corresponding associated trait type
48  --> $DIR/impl_bounds.rs:7:5
49   |
50LL | trait Foo {
51   |       --- in this trait
52...
53LL |     type C where Self: Clone;
54   |     ^^^^^^^^^^^^^^^^^^^^^^^^^ this trait associated type doesn't have the requirement `Fooy<T>: Copy`
55   = note: this error originates in the derive macro `Copy` (in Nightly builds, run with -Z macro-backtrace for more info)
56help: consider restricting type parameter `T`
57   |
58LL | impl<T: std::marker::Copy> Foo for Fooy<T> {
59   |       +++++++++++++++++++
60
61error[E0277]: the trait bound `T: Copy` is not satisfied
62  --> $DIR/impl_bounds.rs:22:24
63   |
64LL |     fn d() where Self: Copy {}
65   |                        ^^^^ the trait `Copy` is not implemented for `T`
66   |
67note: required because of the requirements on the impl of `Copy` for `Fooy<T>`
68  --> $DIR/impl_bounds.rs:11:10
69   |
70LL | #[derive(Copy, Clone)]
71   |          ^^^^
72note: the requirement `Fooy<T>: Copy` appears on the impl method `d` but not on the corresponding trait method
73  --> $DIR/impl_bounds.rs:8:8
74   |
75LL | trait Foo {
76   |       --- in this trait
77...
78LL |     fn d() where Self: Clone;
79   |        ^ this trait method doesn't have the requirement `Fooy<T>: Copy`
80   = note: this error originates in the derive macro `Copy` (in Nightly builds, run with -Z macro-backtrace for more info)
81help: consider restricting type parameter `T`
82   |
83LL | impl<T: std::marker::Copy> Foo for Fooy<T> {
84   |       +++++++++++++++++++
85
86error: aborting due to 5 previous errors
87
88Some errors have detailed explanations: E0277, E0478.
89For more information about an error, try `rustc --explain E0277`.
90