### What it does
Checks for casts of function pointers to something other than usize

### Why is this bad?
Casting a function pointer to anything other than usize/isize is not portable across
architectures, because you end up losing bits if the target type is too small or end up with a
bunch of extra bits that waste space and add more instructions to the final binary than
strictly necessary for the problem

Casting to isize also doesn't make sense since there are no signed addresses.

### Example
```
fn fun() -> i32 { 1 }
let _ = fun as i64;
```

Use instead:
```
let _ = fun as usize;
```