@@ -6,7 +6,146 @@ document.
66
77## Unreleased / Beta / In Rust Nightly
88
9- [ 4ef75291...master] ( https://github.com/rust-lang/rust-clippy/compare/4ef75291...master )
9+ [ e9b7045...master] ( https://github.com/rust-lang/rust-clippy/compare/e9b7045...master )
10+
11+ ## Rust 1.90
12+
13+ Current stable, released 2025-09-18
14+
15+ [ View all 118 merged pull requests] ( https://github.com/rust-lang/rust-clippy/pulls?q=merged%3A2025-06-13T15%3A55%3A04Z..2025-07-25T13%3A24%3A00Z+base%3Amaster )
16+
17+ ## New Lints
18+
19+ * Added [ ` manual_is_multiple_of ` ] to ` complexity ` [ #14292 ] ( https://github.com/rust-lang/rust-clippy/pull/14292 )
20+ * Added [ ` doc_broken_link ` ] to ` pedantic ` [ #13696 ] ( https://github.com/rust-lang/rust-clippy/pull/13696 )
21+
22+ ### Moves and Deprecations
23+
24+ * Move [ ` uninlined_format_args ` ] to ` pedantic ` (from ` style ` , now allow-by-default) [ #15287 ] ( https://github.com/rust-lang/rust-clippy/pull/15287 )
25+
26+ ### Enhancements
27+
28+ * [ ` or_fun_call ` ] now lints ` Option::get_or_insert ` , ` Result::map_or ` , ` Option/Result::and ` methods
29+ [ #15071 ] ( https://github.com/rust-lang/rust-clippy/pull/15071 )
30+ [ #15073 ] ( https://github.com/rust-lang/rust-clippy/pull/15073 )
31+ [ #15074 ] ( https://github.com/rust-lang/rust-clippy/pull/15074 )
32+ * [ ` incompatible_msrv ` ] now recognizes types exceeding MSRV
33+ [ #15296 ] ( https://github.com/rust-lang/rust-clippy/pull/15296 )
34+ * [ ` incompatible_msrv ` ] now checks the right MSRV when in a ` const ` context
35+ [ #15297 ] ( https://github.com/rust-lang/rust-clippy/pull/15297 )
36+ * [ ` zero_ptr ` ] now lints in ` const ` context as well
37+ [ #15152 ] ( https://github.com/rust-lang/rust-clippy/pull/15152 )
38+ * [ ` {flat_,}map_identity ` ] now recognizes ` |[x, y]| [x, y] ` as an identity function
39+ [ #15229 ] ( https://github.com/rust-lang/rust-clippy/pull/15229 )
40+ * [ ` exit ` ] no longer fails on the main function when using ` --test ` or ` --all-targets ` flag
41+ [ #15222 ] ( https://github.com/rust-lang/rust-clippy/pull/15222 )
42+
43+ ### False Positive Fixes
44+
45+ * [ ` if_then_some_else_none ` ] fixed FP when require type coercion
46+ [ #15267 ] ( https://github.com/rust-lang/rust-clippy/pull/15267 )
47+ * [ ` module_name_repetitions ` ] fixed FP on exported macros
48+ [ #15319 ] ( https://github.com/rust-lang/rust-clippy/pull/15319 )
49+ * [ ` unused_async ` ] fixed FP on function with ` todo! `
50+ [ #15308 ] ( https://github.com/rust-lang/rust-clippy/pull/15308 )
51+ * [ ` useless_attribute ` ] fixed FP when using ` #[expect(redundant_imports)] ` and similar lint attributes on ` use ` statements
52+ [ #15318 ] ( https://github.com/rust-lang/rust-clippy/pull/15318 )
53+ * [ ` pattern_type_mismatch ` ] fixed FP in external macro
54+ [ #15306 ] ( https://github.com/rust-lang/rust-clippy/pull/15306 )
55+ * [ ` large_enum_variant ` ] fixed FP by not suggesting ` Box ` in ` no_std ` mode
56+ [ #15241 ] ( https://github.com/rust-lang/rust-clippy/pull/15241 )
57+ * [ ` missing_inline_in_public_items ` ] fixed FP on functions with ` extern `
58+ [ #15313 ] ( https://github.com/rust-lang/rust-clippy/pull/15313 )
59+ * [ ` needless_range_loop ` ] fixed FP on array literals
60+ [ #15314 ] ( https://github.com/rust-lang/rust-clippy/pull/15314 )
61+ * [ ` ptr_as_ptr ` ] fixed wrong suggestions with turbo fish
62+ [ #15289 ] ( https://github.com/rust-lang/rust-clippy/pull/15289 )
63+ * [ ` range_plus_one ` ] , [ ` range_minus_one ` ] fixed FP by restricting lint to cases where it is safe to switch the range type
64+ [ #14432 ] ( https://github.com/rust-lang/rust-clippy/pull/14432 )
65+ * [ ` ptr_arg ` ] fixed FP with underscore binding to ` &T ` or ` &mut T ` argument
66+ [ #15105 ] ( https://github.com/rust-lang/rust-clippy/pull/15105 )
67+ * [ ` unsafe_derive_deserialize ` ] fixed FP caused by the standard library's ` pin!() ` macro
68+ [ #15137 ] ( https://github.com/rust-lang/rust-clippy/pull/15137 )
69+ * [ ` unused_trait_names ` ] fixed FP in macros
70+ [ #14947 ] ( https://github.com/rust-lang/rust-clippy/pull/14947 )
71+ * [ ` expect_fun_call ` ] fixed invalid suggestions
72+ [ #15122 ] ( https://github.com/rust-lang/rust-clippy/pull/15122 )
73+ * [ ` manual_is_multiple_of ` ] fixed various false positives
74+ [ #15205 ] ( https://github.com/rust-lang/rust-clippy/pull/15205 )
75+ * [ ` manual_assert ` ] fixed wrong suggestions for macros
76+ [ #15264 ] ( https://github.com/rust-lang/rust-clippy/pull/15264 )
77+ * [ ` expect_used ` ] fixed false negative when meeting ` Option::ok().expect `
78+ [ #15253 ] ( https://github.com/rust-lang/rust-clippy/pull/15253 )
79+ * [ ` manual_abs_diff ` ] fixed wrong suggestions behind refs
80+ [ #15265 ] ( https://github.com/rust-lang/rust-clippy/pull/15265 )
81+ * [ ` approx_const ` ] fixed FP with overly precise literals and non trivially formatted numerals
82+ [ #15236 ] ( https://github.com/rust-lang/rust-clippy/pull/15236 )
83+ * [ ` arithmetic_side_effects ` ] fixed FP on ` NonZeroU*.get() - 1 `
84+ [ #15238 ] ( https://github.com/rust-lang/rust-clippy/pull/15238 )
85+ * [ ` legacy_numeric_constants ` ] fixed suggestion when call is inside parentheses
86+ [ #15191 ] ( https://github.com/rust-lang/rust-clippy/pull/15191 )
87+ * [ ` manual_is_variant_and ` ] fixed inverted suggestions that could lead to code with different semantics
88+ [ #15206 ] ( https://github.com/rust-lang/rust-clippy/pull/15206 )
89+ * [ ` unnecessary_map_or ` ] fixed FP by not proposing to replace ` map_or ` call when types wouldn't be correct
90+ [ #15181 ] ( https://github.com/rust-lang/rust-clippy/pull/15181 )
91+ * [ ` return_and_then ` ] fixed FP in case of a partially used expression
92+ [ #15115 ] ( https://github.com/rust-lang/rust-clippy/pull/15115 )
93+ * [ ` manual_let_else ` ] fixed FP with binding subpattern with unused name
94+ [ #15118 ] ( https://github.com/rust-lang/rust-clippy/pull/15118 )
95+ * [ ` suboptimal_flops ` ] fixed FP with ambiguous float types in mul_add suggestions
96+ [ #15133 ] ( https://github.com/rust-lang/rust-clippy/pull/15133 )
97+ * [ ` borrow_as_ptr ` ] fixed FP by not removing cast to trait object pointer
98+ [ #15145 ] ( https://github.com/rust-lang/rust-clippy/pull/15145 )
99+ * [ ` unnecessary_operation ` ] fixed FP by not removing casts if they are useful to type the expression
100+ [ #15182 ] ( https://github.com/rust-lang/rust-clippy/pull/15182 )
101+ * [ ` empty_loop ` ] fixed FP on intrinsic function declaration
102+ [ #15201 ] ( https://github.com/rust-lang/rust-clippy/pull/15201 )
103+ * [ ` doc_nested_refdefs ` ] fixed FP where task lists are reported as refdefs
104+ [ #15146 ] ( https://github.com/rust-lang/rust-clippy/pull/15146 )
105+ * [ ` std_instead_of_core ` ] fixed FP when not all items come from the new crate
106+ [ #15165 ] ( https://github.com/rust-lang/rust-clippy/pull/15165 )
107+ * [ ` swap_with_temporary ` ] fixed FP leading to different semantics being suggested
108+ [ #15172 ] ( https://github.com/rust-lang/rust-clippy/pull/15172 )
109+ * [ ` cast_possible_truncation ` ] fixed FP by not giving suggestions inside const context
110+ [ #15164 ] ( https://github.com/rust-lang/rust-clippy/pull/15164 )
111+ * [ ` missing_panics_doc ` ] fixed FP by allowing unwrap() and expect()s in const-only contexts
112+ [ #15170 ] ( https://github.com/rust-lang/rust-clippy/pull/15170 )
113+ * [ ` disallowed_script_idents ` ] fixed FP on identifiers with ` _ `
114+ [ #15123 ] ( https://github.com/rust-lang/rust-clippy/pull/15123 )
115+ * [ ` wildcard_enum_match_arm ` ] fixed wrong suggestions with raw identifiers
116+ [ #15093 ] ( https://github.com/rust-lang/rust-clippy/pull/15093 )
117+ * [ ` borrow_deref_ref ` ] fixed FP by not proposing replacing a reborrow when the reborrow is itself mutably borrowed
118+ [ #14967 ] ( https://github.com/rust-lang/rust-clippy/pull/14967 )
119+ * [ ` manual_ok_err ` ] fixed wrong suggestions with references
120+ [ #15053 ] ( https://github.com/rust-lang/rust-clippy/pull/15053 )
121+ * [ ` identity_op ` ] fixed FP when encountering ` Default::default() `
122+ [ #15028 ] ( https://github.com/rust-lang/rust-clippy/pull/15028 )
123+ * [ ` exhaustive_structs ` ] fixed FP on structs with default valued field
124+ [ #15022 ] ( https://github.com/rust-lang/rust-clippy/pull/15022 )
125+ * [ ` collapsible_else_if ` ] fixed FP on conditionally compiled stmt
126+ [ #14906 ] ( https://github.com/rust-lang/rust-clippy/pull/14906 )
127+ * [ ` missing_const_for_fn ` ] fixed FP by checking MSRV before emitting lint on function containing non-` Sized ` trait bounds
128+ [ #15080 ] ( https://github.com/rust-lang/rust-clippy/pull/15080 )
129+ * [ ` question_mark ` ] fixed FP when else branch of let-else contains ` #[cfg] `
130+ [ #15082 ] ( https://github.com/rust-lang/rust-clippy/pull/15082 )
131+
132+ ### ICE Fixes
133+
134+ * [ ` single_match ` ] fixed ICE with deref patterns and string literals
135+ [ #15124 ] ( https://github.com/rust-lang/rust-clippy/pull/15124 )
136+ * [ ` needless_doctest_main ` ] fixed panic when doctest is invalid
137+ [ #15052 ] ( https://github.com/rust-lang/rust-clippy/pull/15052 )
138+ * [ ` zero_sized_hashmap_values ` ] do not attempt to compute size of a type with escaping lifetimes
139+ [ #15434 ] ( https://github.com/rust-lang/rust-clippy/pull/15434 )
140+
141+ ### Documentation Improvements
142+
143+ * [ ` manual_is_variant_and ` ] improved documentation to include equality comparison patterns
144+ [ #15239 ] ( https://github.com/rust-lang/rust-clippy/pull/15239 )
145+ * [ ` uninlined_format_args ` ] improved documentation with example of how to fix a ` {:?} ` parameter
146+ [ #15228 ] ( https://github.com/rust-lang/rust-clippy/pull/15228 )
147+ * [ ` undocumented_unsafe_blocks ` ] improved documentation wording
148+ [ #15213 ] ( https://github.com/rust-lang/rust-clippy/pull/15213 )
10149
11150## Rust 1.89
12151
0 commit comments