]> git.lizzy.rs Git - rust.git/blob - src/docs/as_conversions.txt
Auto merge of #9425 - kraktus:patch-1, r=xFrednet
[rust.git] / src / docs / as_conversions.txt
1 ### What it does
2 Checks for usage of `as` conversions.
3
4 Note that this lint is specialized in linting *every single* use of `as`
5 regardless of whether good alternatives exist or not.
6 If you want more precise lints for `as`, please consider using these separate lints:
7 `unnecessary_cast`, `cast_lossless/cast_possible_truncation/cast_possible_wrap/cast_precision_loss/cast_sign_loss`,
8 `fn_to_numeric_cast(_with_truncation)`, `char_lit_as_u8`, `ref_to_mut` and `ptr_as_ptr`.
9 There is a good explanation the reason why this lint should work in this way and how it is useful
10 [in this issue](https://github.com/rust-lang/rust-clippy/issues/5122).
11
12 ### Why is this bad?
13 `as` conversions will perform many kinds of
14 conversions, including silently lossy conversions and dangerous coercions.
15 There are cases when it makes sense to use `as`, so the lint is
16 Allow by default.
17
18 ### Example
19 ```
20 let a: u32;
21 ...
22 f(a as u16);
23 ```
24
25 Use instead:
26 ```
27 f(a.try_into()?);
28
29 // or
30
31 f(a.try_into().expect("Unexpected u16 overflow in f"));
32 ```