RS.CLIPPY.CAST_POSSIBLE_WRAP
Casts that may cause wrapping around the value, e.g., `x as i32` where `x: u32` and `x > i32::MAX`
This checker is a Clippy lint created by The Rust Project Contributors. The documentation shown here is a copy of the original documentation for: cast_possible_wrap. Copyright ©2025 The Rust Team. All rights reserved.
What it does
Checks for casts from an unsigned type to a signed type of
the same size, or possibly smaller due to target-dependent integers.
Performing such a cast is a no-op for the compiler (that is, nothing is
changed at the bit level), and the binary representation of the value is
reinterpreted. This can cause wrapping if the value is too big
for the target signed type. However, the cast works as defined, so this lint
is Allow by default.
Why is this bad?
While such a cast is not bad in itself, the results can be surprising when this is not the intended behavior:
Example
let _ = u32::MAX as i32; // will yield a value of `-1`
Use instead:
let _ = i32::try_from(u32::MAX).ok();