1
+ mod a {
2
+ trait Foo { }
3
+ impl < ' a > Foo for & ' a u32 { }
4
+ impl dyn Foo { //~ HELP consider relaxing the implicit `'static` requirement
5
+ fn hello ( & self ) { }
6
+ }
7
+ fn bar < ' a > ( x : & ' a & ' a u32 ) {
8
+ let y: & dyn Foo = x; //~ ERROR lifetime may not live long enough
9
+ y. hello ( ) ;
10
+ }
11
+ }
12
+ mod b {
13
+ trait Foo { }
14
+ impl < ' a > Foo for & ' a u32 { }
15
+ impl dyn Foo {
16
+ fn hello ( & ' static self ) { }
17
+ }
18
+ fn bar < ' a > ( x : & ' a & ' a u32 ) {
19
+ let y: & dyn Foo = x; //~ ERROR lifetime may not live long enough
20
+ y. hello ( ) ;
21
+ }
22
+ }
23
+ mod c {
24
+ trait Foo { }
25
+ impl < ' a > Foo for & ' a u32 { }
26
+ impl dyn Foo {
27
+ fn hello ( & ' static self ) where Self : ' static { }
28
+ }
29
+ fn bar < ' a > ( x : & ' a & ' a u32 ) {
30
+ let y: & dyn Foo = x; //~ ERROR lifetime may not live long enough
31
+ y. hello ( ) ;
32
+ }
33
+ }
34
+ mod d {
35
+ trait Foo { }
36
+ impl < ' a > Foo for & ' a u32 { }
37
+ impl dyn Foo {
38
+ fn hello ( & self ) where Self : ' static { }
39
+ }
40
+ fn bar < ' a > ( x : & ' a & ' a u32 ) {
41
+ let y: & dyn Foo = x; //~ ERROR lifetime may not live long enough
42
+ y. hello ( ) ;
43
+ }
44
+ }
45
+ mod e {
46
+ trait Foo { }
47
+ impl < ' a > Foo for & ' a u32 { }
48
+ impl dyn Foo + ' static { //~ HELP consider replacing this `'static` requirement
49
+ fn hello ( & self ) { }
50
+ }
51
+ fn bar < ' a > ( x : & ' a & ' a u32 ) {
52
+ let y: & dyn Foo = x; //~ ERROR lifetime may not live long enough
53
+ y. hello ( ) ;
54
+ }
55
+ }
56
+ mod f {
57
+ trait Foo { }
58
+ impl < ' a > Foo for & ' a u32 { }
59
+ impl dyn Foo + ' static {
60
+ fn hello ( & ' static self ) { }
61
+ }
62
+ fn bar < ' a > ( x : & ' a & ' a u32 ) {
63
+ let y: & dyn Foo = x; //~ ERROR lifetime may not live long enough
64
+ y. hello ( ) ;
65
+ }
66
+ }
67
+ mod g {
68
+ trait Foo { }
69
+ impl < ' a > Foo for & ' a u32 { }
70
+ impl dyn Foo + ' static {
71
+ fn hello ( & ' static self ) where Self : ' static { }
72
+ }
73
+ fn bar < ' a > ( x : & ' a & ' a u32 ) {
74
+ let y: & dyn Foo = x; //~ ERROR lifetime may not live long enough
75
+ y. hello ( ) ;
76
+ }
77
+ }
78
+ mod h {
79
+ trait Foo { }
80
+ impl < ' a > Foo for & ' a u32 { }
81
+ impl dyn Foo + ' static {
82
+ fn hello ( & self ) where Self : ' static { }
83
+ }
84
+ fn bar < ' a > ( x : & ' a & ' a u32 ) {
85
+ let y: & dyn Foo = x; //~ ERROR lifetime may not live long enough
86
+ y. hello ( ) ;
87
+ }
88
+ }
89
+ mod i {
90
+ trait Foo { }
91
+ impl < ' a > Foo for & ' a u32 { }
92
+ impl dyn Foo where Self : ' static {
93
+ fn hello ( & self ) { }
94
+ }
95
+ fn bar < ' a > ( x : & ' a & ' a u32 ) {
96
+ let y: & dyn Foo = x; //~ ERROR lifetime may not live long enough
97
+ y. hello ( ) ;
98
+ }
99
+ }
100
+ mod j {
101
+ trait Foo { }
102
+ impl < ' a > Foo for & ' a u32 { }
103
+ impl dyn Foo where Self : ' static {
104
+ fn hello ( & ' static self ) { }
105
+ }
106
+ fn bar < ' a > ( x : & ' a & ' a u32 ) {
107
+ let y: & dyn Foo = x; //~ ERROR lifetime may not live long enough
108
+ y. hello ( ) ;
109
+ }
110
+ }
111
+ mod k {
112
+ trait Foo { }
113
+ impl < ' a > Foo for & ' a u32 { }
114
+ impl dyn Foo where Self : ' static {
115
+ fn hello ( & ' static self ) where Self : ' static { }
116
+ }
117
+ fn bar < ' a > ( x : & ' a & ' a u32 ) {
118
+ let y: & dyn Foo = x; //~ ERROR lifetime may not live long enough
119
+ y. hello ( ) ;
120
+ }
121
+ }
122
+ mod l {
123
+ trait Foo { }
124
+ impl < ' a > Foo for & ' a u32 { }
125
+ impl dyn Foo where Self : ' static {
126
+ fn hello ( & self ) where Self : ' static { }
127
+ }
128
+ fn bar < ' a > ( x : & ' a & ' a u32 ) {
129
+ let y: & dyn Foo = x; //~ ERROR lifetime may not live long enough
130
+ y. hello ( ) ;
131
+ }
132
+ }
133
+ mod m {
134
+ trait Foo { }
135
+ impl < ' a > Foo for & ' a u32 { }
136
+ impl dyn Foo + ' static where Self : ' static {
137
+ fn hello ( & self ) { }
138
+ }
139
+ fn bar < ' a > ( x : & ' a & ' a u32 ) {
140
+ let y: & dyn Foo = x; //~ ERROR lifetime may not live long enough
141
+ y. hello ( ) ;
142
+ }
143
+ }
144
+ mod n {
145
+ trait Foo { }
146
+ impl < ' a > Foo for & ' a u32 { }
147
+ impl dyn Foo + ' static where Self : ' static {
148
+ fn hello ( & ' static self ) { }
149
+ }
150
+ fn bar < ' a > ( x : & ' a & ' a u32 ) {
151
+ let y: & dyn Foo = x; //~ ERROR lifetime may not live long enough
152
+ y. hello ( ) ;
153
+ }
154
+ }
155
+ mod o {
156
+ trait Foo { }
157
+ impl < ' a > Foo for & ' a u32 { }
158
+ impl dyn Foo + ' static where Self : ' static {
159
+ fn hello ( & ' static self ) where Self : ' static { }
160
+ }
161
+ fn bar < ' a > ( x : & ' a & ' a u32 ) {
162
+ let y: & dyn Foo = x; //~ ERROR lifetime may not live long enough
163
+ y. hello ( ) ;
164
+ }
165
+ }
166
+ mod p {
167
+ trait Foo { }
168
+ impl < ' a > Foo for & ' a u32 { }
169
+ impl dyn Foo + ' static where Self : ' static {
170
+ fn hello ( & self ) where Self : ' static { }
171
+ }
172
+ fn bar < ' a > ( x : & ' a & ' a u32 ) {
173
+ let y: & dyn Foo = x; //~ ERROR lifetime may not live long enough
174
+ y. hello ( ) ;
175
+ }
176
+ }
177
+ mod q {
178
+ struct Foo { }
179
+ impl Foo {
180
+ fn hello ( & ' static self ) { }
181
+ }
182
+ fn bar < ' a > ( x : & ' a & ' a Foo ) {
183
+ x. hello ( ) ; //~ ERROR borrowed data escapes outside of function
184
+ }
185
+ }
186
+ mod r {
187
+ struct Foo { }
188
+ impl Foo {
189
+ fn hello ( & ' static self ) where Self : ' static { }
190
+ }
191
+ fn bar < ' a > ( x : & ' a & ' a Foo ) {
192
+ x. hello ( ) ; //~ ERROR borrowed data escapes outside of function
193
+ }
194
+ }
195
+ fn main ( ) { }
0 commit comments