less aggressive needless_borrows_for_generic_args #12706
Merged
+88
−61
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.
Current implementation looks for significant drops, that can change the behavior, but that's not enough - value might not have a
Drop
itself but one of its children might have it.A good example is passing a reference to
PathBuf
tostd::fs::File::open
. There's no benefits to passPathBuf
by value, but sinceclippy
can't seeDrop
onVec
several layers down it complains forcing pass by value and making it impossible to use the same name later.New implementation only looks at copy values or values created in place so existing variable will never be moved but things that take a string reference created and value is created inplace
&"".to_owned()
will make it to suggest to use"".to_owned()
still.Fixes #12454
changelog: [
needless_borrows_for_generic_args
]: avoid moving variables