RS.CLIPPY.AS_CONVERSIONS

Using a potentially dangerous silent `as` conversion

This checker is a Clippy lint created by The Rust Project Contributors. The documentation shown here is a copy of the original documentation for: as_conversions. Copyright ©2025 The Rust Team. All rights reserved.

What it does

Checks for usage of as conversions.

Note that this lint is specialized in linting every single use of as regardless of whether good alternatives exist or not. If you want more precise lints for as, please consider using these separate lints:

  • clippy::cast_lossless
  • clippy::cast_possible_truncation
  • clippy::cast_possible_wrap
  • clippy::cast_precision_loss
  • clippy::cast_sign_loss
  • clippy::char_lit_as_u8
  • clippy::fn_to_numeric_cast
  • clippy::fn_to_numeric_cast_with_truncation
  • clippy::ptr_as_ptr
  • clippy::unnecessary_cast
  • invalid_reference_casting

There is a good explanation the reason why this lint should work in this way and how it is useful in this issue.

Why restrict this?

as conversions will perform many kinds of conversions, including silently lossy conversions and dangerous coercions. There are cases when it makes sense to use as, so the lint is Allow by default.

Example

let a: u32;
...
f(a as u16);

Use instead:

f(a.try_into()?);

// or

f(a.try_into().expect("Unexpected u16 overflow in f"));