質問編集履歴

2

error

2017/12/11 09:09

投稿

yumetodo
yumetodo

スコア5850

test CHANGED
File without changes
test CHANGED
@@ -135,3 +135,199 @@
135
135
 
136
136
 
137
137
  もうすこし可読性のある書き方をするにはどうしたらいいでしょうか?
138
+
139
+
140
+
141
+ ---
142
+
143
+
144
+
145
+ 追記
146
+
147
+
148
+
149
+ gyu-donさんの回答を受けて
150
+
151
+
152
+
153
+ ```rust
154
+
155
+ impl<'a> PartialEq<TypeElement<'a>> for TypeElement<'a> {
156
+
157
+ fn eq<'b>(&self, other: &TypeElement<'b>) -> bool {
158
+
159
+ if self.value.is_some() {
160
+
161
+ self.value == other.value
162
+
163
+ } else {
164
+
165
+ self.before.is_some() && self.before == other.before && self.after == other.after
166
+
167
+ }
168
+
169
+ }
170
+
171
+ }
172
+
173
+ ```
174
+
175
+
176
+
177
+ のように書き換えたのですが、[8e6aa6f](https://github.com/yumetodo/cpp_template_type_indenter_lib/commit/8e6aa6f2a1a506e573fe3ac9d77312e33881358c)
178
+
179
+
180
+
181
+ ```
182
+
183
+ > cargo test
184
+
185
+ Compiling cpp_template_type_indenter_lib v0.1.0 (file:///C:/Users/yumetodo/Documents/rust/cpp_template_type_indenter_lib)
186
+
187
+ error[E0308]: mismatched types
188
+
189
+ --> src\type_element.rs:19:83
190
+
191
+ |
192
+
193
+ 19 | self.before.is_some() && self.before == other.before && self.after == other.after
194
+
195
+ | ^^^^^^^^^^^ lifetime mismatch
196
+
197
+ |
198
+
199
+ = note: expected type `std::option::Option<&'a str>`
200
+
201
+ found type `std::option::Option<&'b str>`
202
+
203
+ note: the lifetime 'b as defined on the method body at 15:5...
204
+
205
+ --> src\type_element.rs:15:5
206
+
207
+ |
208
+
209
+ 15 | / fn eq<'b>(&self, other: &TypeElement<'b>) -> bool {
210
+
211
+ 16 | | if self.value.is_some() {
212
+
213
+ 17 | | self.value == other.value
214
+
215
+ 18 | | } else {
216
+
217
+ 19 | | self.before.is_some() && self.before == other.before && self.after == other.after
218
+
219
+ 20 | | }
220
+
221
+ 21 | | }
222
+
223
+ | |_____^
224
+
225
+ note: ...does not necessarily outlive the lifetime 'a as defined on the impl at 14:1
226
+
227
+ --> src\type_element.rs:14:1
228
+
229
+ |
230
+
231
+ 14 | / impl<'a> PartialEq<TypeElement<'a>> for TypeElement<'a> {
232
+
233
+ 15 | | fn eq<'b>(&self, other: &TypeElement<'b>) -> bool {
234
+
235
+ 16 | | if self.value.is_some() {
236
+
237
+ 17 | | self.value == other.value
238
+
239
+ ... |
240
+
241
+ 21 | | }
242
+
243
+ 22 | | }
244
+
245
+ | |_^
246
+
247
+
248
+
249
+ error: aborting due to previous error(s)
250
+
251
+
252
+
253
+ error[E0308]: mismatched types
254
+
255
+ --> src\type_element.rs:19:83
256
+
257
+ |
258
+
259
+ 19 | self.before.is_some() && self.before == other.before && self.after == other.after
260
+
261
+ | ^^^^^^^^^^^ lifetime mismatch
262
+
263
+ |
264
+
265
+ = note: expected type `std::option::Option<&'a str>`
266
+
267
+ found type `std::option::Option<&'b str>`
268
+
269
+ note: the lifetime 'b as defined on the method body at 15:5...
270
+
271
+ --> src\type_element.rs:15:5
272
+
273
+ |
274
+
275
+ 15 | / fn eq<'b>(&self, other: &TypeElement<'b>) -> bool {
276
+
277
+ 16 | | if self.value.is_some() {
278
+
279
+ 17 | | self.value == other.value
280
+
281
+ 18 | | } else {
282
+
283
+ 19 | | self.before.is_some() && self.before == other.before && self.after == other.after
284
+
285
+ 20 | | }
286
+
287
+ 21 | | }
288
+
289
+ | |_____^
290
+
291
+ note: ...does not necessarily outlive the lifetime 'a as defined on the impl at 14:1
292
+
293
+ --> src\type_element.rs:14:1
294
+
295
+ |
296
+
297
+ 14 error:| /Could not compile `cpp_template_type_indenter_lib`.
298
+
299
+ impl<'a> PartialEq<TypeElement<'a>> for TypeElement<'a> {
300
+
301
+ 15Build failed, waiting for other jobs to finish...
302
+
303
+ | | fn eq<'b>(&self, other: &TypeElement<'b>) -> bool {
304
+
305
+ 16 | | if self.value.is_some() {
306
+
307
+ 17 | | self.value == other.value
308
+
309
+ ... |
310
+
311
+ 21 | | }
312
+
313
+ 22 | | }
314
+
315
+ | |_^
316
+
317
+
318
+
319
+ error: aborting due to previous error(s)
320
+
321
+
322
+
323
+ error: Could not compile `cpp_template_type_indenter_lib`.
324
+
325
+
326
+
327
+ To learn more, run the command again with --verbose.
328
+
329
+ ```
330
+
331
+
332
+
333
+ のように怒られます。

1

Rust初心者

2017/12/11 09:09

投稿

yumetodo
yumetodo

スコア5850

test CHANGED
File without changes
test CHANGED
File without changes