### What it does
Checks for casts between numerical types that may
be replaced by safe conversion functions.

### Why is this bad?
Rust's `as` keyword will perform many kinds of
conversions, including silently lossy conversions. Conversion functions such
as `i32::from` will only perform lossless conversions. Using the conversion
functions prevents conversions from turning into silent lossy conversions if
the types of the input expressions ever change, and make it easier for
people reading the code to know that the conversion is lossless.

### Example
```
fn as_u64(x: u8) -> u64 {
    x as u64
}
```

Using `::from` would look like this:

```
fn as_u64(x: u8) -> u64 {
    u64::from(x)
}
```