File: suggest-boxed-trait-objects-instead-of-impl-trait.stderr

package info (click to toggle)
rustc 1.87.0%2Bdfsg1-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid
  • size: 925,564 kB
  • sloc: xml: 158,127; python: 36,039; javascript: 19,761; sh: 19,737; cpp: 18,981; ansic: 13,133; asm: 4,376; makefile: 710; perl: 29; lisp: 28; ruby: 19; sql: 11
file content (49 lines) | stat: -rw-r--r-- 1,464 bytes parent folder | download | duplicates (11)
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
error[E0308]: `if` and `else` have incompatible types
  --> $DIR/suggest-boxed-trait-objects-instead-of-impl-trait.rs:17:9
   |
LL | /     if true {
LL | |         S
   | |         - expected because of this
LL | |     } else {
LL | |         Y
   | |         ^ expected `S`, found `Y`
LL | |     }
   | |_____- `if` and `else` have incompatible types
   |
help: you could change the return type to be a boxed trait object
   |
LL - fn foo() -> impl Trait {
LL + fn foo() -> Box<dyn Trait> {
   |
help: if you change the return type to expect trait objects, box the returned expressions
   |
LL ~         Box::new(S)
LL |     } else {
LL ~         Box::new(Y)
   |

error[E0308]: `match` arms have incompatible types
  --> $DIR/suggest-boxed-trait-objects-instead-of-impl-trait.rs:24:18
   |
LL | /     match true {
LL | |         true => S,
   | |                 - this is found to be of type `S`
LL | |         false => Y,
   | |                  ^ expected `S`, found `Y`
LL | |     }
   | |_____- `match` arms have incompatible types
   |
help: you could change the return type to be a boxed trait object
   |
LL - fn bar() -> impl Trait {
LL + fn bar() -> Box<dyn Trait> {
   |
help: if you change the return type to expect trait objects, box the returned expressions
   |
LL ~         true => Box::new(S),
LL ~         false => Box::new(Y),
   |

error: aborting due to 2 previous errors

For more information about this error, try `rustc --explain E0308`.