- Notifications
You must be signed in to change notification settings - Fork301
coord: ranged1d: fix irrefutable if let warning#667
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to ourterms of service andprivacy statement. We’ll occasionally send you account related emails.
Already on GitHub?Sign in to your account
coord: ranged1d: fix irrefutable if let warning#667
Uh oh!
There was an error while loading.Please reload this page.
Conversation
Thanks for your PR. fnfrom_index(&self,index:usize) ->Option<Self::ValueType>{Self::ValueType::try_from(index).ok().and_then(|index|self.0.checked_add(index))} |
I keep getting this annoying warning with rust 1.83:warning: irrefutable `if let` pattern --> plotters/src/coord/ranged1d/types/numeric.rs:29:20 |29 | if let Ok(index) = Self::ValueType::try_from(index) { | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^...365 | impl_discrete_trait!(RangedCoordusize); | -------------------------------------- in this macro invocation | = note: this pattern will always match, so the `if let` is useless = help: consider replacing the `if let` with a `let` = note: `#[warn(irrefutable_let_patterns)]` on by default = note: this warning originates in the macro `impl_discrete_trait` (in Nightly builds, run with -Z macro-backtrace for more info)This is because the conversion of usize to ValueType alwayspasses, so we don't need the try_from() in all cases.An additional problem are potential overflows so we usechecked_add() which returns None if the addition fails,thus also avoiding the irrefutable let pattern while alsoprotecting against overflows.Signed-off-by: Adrian Ratiu <adrian.ratiu@collabora.com>
43990c4
todd806bd
CompareThanks@booti386 I've updated the PR with your suggestion. @AaronErhardt Can we please land this? It's been waiting for some while now. The failing checks seem to be unrelated. |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others.Learn more.
Thanks!
0f195ea
intoplotters-rs:masterUh oh!
There was an error while loading.Please reload this page.
I keep getting this annoying warning with rust 1.83:
warning: irrefutable
if let
pattern--> plotters/src/coord/ranged1d/types/numeric.rs:29:20
|
29 | if let Ok(index) = Self::ValueType::try_from(index) {
| ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
...
365 | impl_discrete_trait!(RangedCoordusize);
| -------------------------------------- in this macro invocation
|
= note: this pattern will always match, so the
if let
is useless= help: consider replacing the
if let
with alet
= note:
#[warn(irrefutable_let_patterns)]
on by default= note: this warning originates in the macro
impl_discrete_trait
(in Nightly builds, run with -Z macro-backtrace for more info)This is because the conversion of usize to ValueType always passes, so we don't need the try_from().
The problem with this operation is not the conversion which always succeeds, instead it is the potential overflows, so we use checked_add() which returns None if the addition fails.