6

Uplift `clippy::{drop,forget}_{ref,copy}` lints by Urgau · Pull Request #109732...

 1 year ago
source link: https://github.com/rust-lang/rust/pull/109732
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.

Contributor

This PR aims at uplifting the clippy::drop_ref, clippy::drop_copy, clippy::forget_ref and clippy::forget_copy lints.

Those lints are/were declared in the correctness category of clippy because they lint on useless and most probably is not what the developer wanted.

drop_ref and forget_ref

The drop_ref and forget_ref lint checks for calls to std::mem::drop or std::mem::forget with a reference instead of an owned value.

Example

let mut lock_guard = mutex.lock();
std::mem::drop(&lock_guard) // Should have been drop(lock_guard), mutex
// still locked
operation_that_requires_mutex_to_be_unlocked();

Explanation

Calling drop or forget on a reference will only drop the reference itself, which is a no-op. It will not call the drop or forget method on the underlying referenced value, which is likely what was intended.

drop_copy and forget_copy

The drop_copy and forget_copy lint checks for calls to std::mem::forget or std::mem::drop with a value that derives the Copy trait.

Example

let x: i32 = 42; // i32 implements Copy
std::mem::forget(x) // A copy of x is passed to the function, leaving the
                    // original unaffected

Explanation

Calling std::mem::forget does nothing for types that implement Copy since the value will be copied and moved into the function on invocation.


Followed the instructions for uplift a clippy describe here: #99696 (review)

cc @m-ou-se (as T-libs-api leader because the uplifting was discussed in a recent meeting)

Nilstrieb, dgiger42, Throne3d, frewsxcv, and KisaragiEffective reacted with thumbs up emojim-ou-se, est31, and flip1995 reacted with hooray emoji

About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK