mirror of
https://github.com/rust-lang/rust-clippy
synced 2024-12-20 18:13:36 +00:00
27 lines
776 B
Rust
27 lines
776 B
Rust
|
#![warn(clippy::undropped_manually_drops)]
|
||
|
|
||
|
struct S;
|
||
|
|
||
|
fn main() {
|
||
|
let f = std::mem::drop;
|
||
|
let g = std::mem::ManuallyDrop::drop;
|
||
|
let mut manual1 = std::mem::ManuallyDrop::new(S);
|
||
|
let mut manual2 = std::mem::ManuallyDrop::new(S);
|
||
|
let mut manual3 = std::mem::ManuallyDrop::new(S);
|
||
|
let mut manual4 = std::mem::ManuallyDrop::new(S);
|
||
|
|
||
|
// These lines will not drop `S` and should be linted
|
||
|
drop(std::mem::ManuallyDrop::new(S));
|
||
|
drop(manual1);
|
||
|
|
||
|
// FIXME: this line is not linted, though it should be
|
||
|
f(manual2);
|
||
|
|
||
|
// These lines will drop `S` and should be okay.
|
||
|
unsafe {
|
||
|
std::mem::ManuallyDrop::drop(&mut std::mem::ManuallyDrop::new(S));
|
||
|
std::mem::ManuallyDrop::drop(&mut manual3);
|
||
|
g(&mut manual4);
|
||
|
}
|
||
|
}
|