summaryrefslogtreecommitdiffstats
path: root/src/test/ui/generic-associated-types/impl_bounds.stderr
blob: ce79c635add69ac2e94f8c8e6fd6125980115109 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
error[E0276]: impl has stricter requirements than trait
  --> $DIR/impl_bounds.rs:15:39
   |
LL |     type A<'a> where Self: 'a;
   |     ---------- definition of `A` from trait
...
LL |     type A<'a> = (&'a ()) where Self: 'static;
   |                                       ^^^^^^^ impl has extra requirement `T: 'static`

error[E0276]: impl has stricter requirements than trait
  --> $DIR/impl_bounds.rs:17:48
   |
LL |     type B<'a, 'b> where 'a: 'b;
   |     -------------- definition of `B` from trait
...
LL |     type B<'a, 'b> = (&'a(), &'b ()) where 'b: 'a;
   |                                                ^^ impl has extra requirement `'b: 'a`

error[E0478]: lifetime bound not satisfied
  --> $DIR/impl_bounds.rs:17:22
   |
LL |     type B<'a, 'b> where 'a: 'b;
   |     -------------- definition of `B` from trait
...
LL |     type B<'a, 'b> = (&'a(), &'b ()) where 'b: 'a;
   |                      ^^^^^^^^^^^^^^^             - help: try copying this clause from the trait: `, 'a: 'b`
   |
note: lifetime parameter instantiated with the lifetime `'a` as defined here
  --> $DIR/impl_bounds.rs:17:12
   |
LL |     type B<'a, 'b> = (&'a(), &'b ()) where 'b: 'a;
   |            ^^
note: but lifetime parameter must outlive the lifetime `'b` as defined here
  --> $DIR/impl_bounds.rs:17:16
   |
LL |     type B<'a, 'b> = (&'a(), &'b ()) where 'b: 'a;
   |                ^^

error[E0277]: the trait bound `T: Copy` is not satisfied
  --> $DIR/impl_bounds.rs:20:33
   |
LL |     type C = String where Self: Copy;
   |                                 ^^^^ the trait `Copy` is not implemented for `T`
   |
note: required because of the requirements on the impl of `Copy` for `Fooy<T>`
  --> $DIR/impl_bounds.rs:11:10
   |
LL | #[derive(Copy, Clone)]
   |          ^^^^
note: the requirement `Fooy<T>: Copy` appears on the `impl`'s associated type `C` but not on the corresponding trait's associated type
  --> $DIR/impl_bounds.rs:7:10
   |
LL | trait Foo {
   |       --- in this trait
...
LL |     type C where Self: Clone;
   |          ^ this trait's associated type doesn't have the requirement `Fooy<T>: Copy`
   = note: this error originates in the derive macro `Copy` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider restricting type parameter `T`
   |
LL | impl<T: std::marker::Copy> Foo for Fooy<T> {
   |       +++++++++++++++++++

error[E0277]: the trait bound `T: Copy` is not satisfied
  --> $DIR/impl_bounds.rs:22:24
   |
LL |     fn d() where Self: Copy {}
   |                        ^^^^ the trait `Copy` is not implemented for `T`
   |
note: required because of the requirements on the impl of `Copy` for `Fooy<T>`
  --> $DIR/impl_bounds.rs:11:10
   |
LL | #[derive(Copy, Clone)]
   |          ^^^^
note: the requirement `Fooy<T>: Copy` appears on the `impl`'s method `d` but not on the corresponding trait's method
  --> $DIR/impl_bounds.rs:8:8
   |
LL | trait Foo {
   |       --- in this trait
...
LL |     fn d() where Self: Clone;
   |        ^ this trait's method doesn't have the requirement `Fooy<T>: Copy`
   = note: this error originates in the derive macro `Copy` (in Nightly builds, run with -Z macro-backtrace for more info)
help: consider restricting type parameter `T`
   |
LL | impl<T: std::marker::Copy> Foo for Fooy<T> {
   |       +++++++++++++++++++

error: aborting due to 5 previous errors

Some errors have detailed explanations: E0276, E0277, E0478.
For more information about an error, try `rustc --explain E0276`.