You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
This would also affect the single_match lint. Essentially, whenever someone writes a pattern like this:
if let Ordering::Greater = a.cmp(b) { ... }
It would be a bit clearer to write something like this:
if a.cmp(b) == Ordering::Greater { ... }
Specifically, if the left hand side of the if let contains a value that can be constructed directly, and the destructured value implements PartialEq, then is makes a lot more sense to refactor the if let into a direct comparison.
This would also affect the single_match and single_match_else lints to give proper suggestions, i.e. changing:
Add lint `equatable_if_let`
This is my attempt for #1716. There is a major false positive, which is people may implement `PartialEq` in a different way. It is unactionable at the moment so I put it into `nursery`.
There is a trait `StructuralPartialEq` for solving this problem which is promising but it has several problems currently:
* Integers and tuples doesn't implement it.
* Some types wrongly implement it, like `Option<T>` when `T` doesn't implement it.
I consider them bugs and against the propose of `StructuralPartialEq`. When they become fixed, this lint can become a useful lint with a single line change.
changelog: New lint: [`equatable_if_let`]
Add lint `equatable_if_let`
This is my attempt for #1716. There is a major false positive, which is people may implement `PartialEq` in a different way. It is unactionable at the moment so I put it into `nursery`.
There is a trait `StructuralPartialEq` for solving this problem which is promising but it has several problems currently:
* Integers and tuples doesn't implement it.
* Some types wrongly implement it, like `Option<T>` when `T` doesn't implement it.
I consider them bugs and against the propose of `StructuralPartialEq`. When they become fixed, this lint can become a useful lint with a single line change.
changelog: New lint: [`equatable_if_let`]
This would also affect the
single_match
lint. Essentially, whenever someone writes a pattern like this:It would be a bit clearer to write something like this:
Specifically, if the left hand side of the
if let
contains a value that can be constructed directly, and the destructured value implementsPartialEq
, then is makes a lot more sense to refactor theif let
into a direct comparison.This would also affect the
single_match
andsingle_match_else
lints to give proper suggestions, i.e. changing:to:
The text was updated successfully, but these errors were encountered: