rust-quiz icon indicating copy to clipboard operation
rust-quiz copied to clipboard

Idea: `let _ = ` vs `_ = `

Open ChayimFriedman2 opened this issue 1 year ago • 0 comments

Discovered today: both let _ = and _ = (destructuring assignment) can be used to ignore #[must_use], however because the former is a statement while the latter is an expression they have a difference with temporary lifetime extension:

struct NoisyDrop;
impl Drop for NoisyDrop {
    fn drop(&mut self) {
        println!("NoisyDrop drop");
    }
}

fn main() {
    let _ = &NoisyDrop;
    println!("after");
}

Prints:

after
NoisyDrop drop

While:

struct NoisyDrop;
impl Drop for NoisyDrop {
    fn drop(&mut self) {
        println!("NoisyDrop drop");
    }
}

fn main() {
    _ = &NoisyDrop;
    println!("after");
}

Prints:

NoisyDrop drop
after

ChayimFriedman2 avatar Jun 01 '23 16:06 ChayimFriedman2