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
less aggressive needless_borrows_for_generic_args #12706
Conversation
Thanks for the pull request, and welcome! The Rust team is excited to review your changes, and you should hear from @dswij (or someone else) some time within the next two weeks. Please see the contribution instructions for more information. Namely, in order to ensure the minimum review times lag, PR authors and assigned reviewers should ensure that the review label (
|
9a5a614
to
8e67bf1
Compare
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` to `std::fs::File::open`. There's no benefits to pass `PathBuf` by value, but since clippy can't see `Drop` on `Vec` 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 inplace 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 rust-lang#12454
8e67bf1
to
79a14de
Compare
Thank you. @bors r+ |
☀️ Test successful - checks-action_dev_test, checks-action_remark_test, checks-action_test |
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