Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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 our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
new lint:
unnecessary_reserve
#14114base: master
Are you sure you want to change the base?
new lint:
unnecessary_reserve
#14114Changes from all commits
ecd37f9
841ce0d
21b9876
6eecd74
374b6ed
9eb1dec
File filter
Filter by extension
Conversations
Jump to
There are no files selected for viewing
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.
It is more idiomatic for Clippy code to have
method
be thePathSegment
, and deconstruct the arguments since you know you want only one. Also, the receiver of a method is usually namedreceiver
, or it could bereserve_receiver
if you need to manipulate several ones:Note that you won't have to use
args_a[0]
later,arg
will contain the argument ofreserve
.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.
You can be a bit more compact but this is a matter of style:
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.
You need to deny side effects by calling
.deny_side_effects()
, or you will linteven though this is not the same receiver.
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.
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.
Why do you need to check for the type if you will compare the expressions anyway? Not doing so would even let you inline the shorter form of
acceptable_type()
at the only place where it would now be called.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.
You should stop iterating at this point by returning
ControlFlow::Break(block.span)
and return the result offor_each_expr()
, you don't needread_found
at all.This is assuming that
for_each_expr()
is the right choice, I'm not sure it is. Maybe you could iterate over the statements of the block (and the expression if present) instead of over any expressions, that can be nested. Here the lint will trigger for:which is unlikely to be encountered, but still, the fix would be incorrect. The current version of the lint would even propose to remove the whole triplet, saying to remove the line.
You could even look for two successive statements (or expr for the last one), with the
extend()
immediately following thereserve()
.