Suggest into instead of try_into if possible with int types
If it is possible to convert an integer type into another using
`into`, don't suggest `try_into`. This commit changes the suggested
method to convert from one integer type to another for the following
cases:
- u{n} -> i{m} where n < m
- u8 -> isize
- i{n} -> isize where n <= 16
- u{n} -> usize where n <= 16
This commit is contained in:
parent
46ec74e60f
commit
1f0a864570
3 changed files with 70 additions and 1 deletions
17
src/test/ui/suggestions/integer-into.rs
Normal file
17
src/test/ui/suggestions/integer-into.rs
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
fn main() {
|
||||
let a = 1u8;
|
||||
let _: i64 = a;
|
||||
//~^ ERROR mismatched types
|
||||
|
||||
let b = 1i8;
|
||||
let _: isize = b;
|
||||
//~^ ERROR mismatched types
|
||||
|
||||
let c = 1u8;
|
||||
let _: isize = c;
|
||||
//~^ ERROR mismatched types
|
||||
|
||||
let d = 1u8;
|
||||
let _: usize = d;
|
||||
//~^ ERROR mismatched types
|
||||
}
|
||||
43
src/test/ui/suggestions/integer-into.stderr
Normal file
43
src/test/ui/suggestions/integer-into.stderr
Normal file
|
|
@ -0,0 +1,43 @@
|
|||
error[E0308]: mismatched types
|
||||
--> $DIR/integer-into.rs:3:18
|
||||
|
|
||||
LL | let _: i64 = a;
|
||||
| --- ^
|
||||
| | |
|
||||
| | expected `i64`, found `u8`
|
||||
| | help: you can convert an `u8` to `i64`: `a.into()`
|
||||
| expected due to this
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/integer-into.rs:7:20
|
||||
|
|
||||
LL | let _: isize = b;
|
||||
| ----- ^
|
||||
| | |
|
||||
| | expected `isize`, found `i8`
|
||||
| | help: you can convert an `i8` to `isize`: `b.into()`
|
||||
| expected due to this
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/integer-into.rs:11:20
|
||||
|
|
||||
LL | let _: isize = c;
|
||||
| ----- ^
|
||||
| | |
|
||||
| | expected `isize`, found `u8`
|
||||
| | help: you can convert an `u8` to `isize`: `c.into()`
|
||||
| expected due to this
|
||||
|
||||
error[E0308]: mismatched types
|
||||
--> $DIR/integer-into.rs:15:20
|
||||
|
|
||||
LL | let _: usize = d;
|
||||
| ----- ^
|
||||
| | |
|
||||
| | expected `usize`, found `u8`
|
||||
| | help: you can convert an `u8` to `usize`: `d.into()`
|
||||
| expected due to this
|
||||
|
||||
error: aborting due to 4 previous errors
|
||||
|
||||
For more information about this error, try `rustc --explain E0308`.
|
||||
Loading…
Add table
Add a link
Reference in a new issue