//@ run-rustfix #![allow(unused_variables, dead_code)] #[derive(Clone)] struct Struct; #[derive(Clone)] struct Struct2; // We use a second one here because otherwise when applying suggestions we'd end up with two // `#[derive(Clone)]` annotations. fn test1() { let mut val = Some(Struct); while let Some(ref foo) = val { //~ ERROR use of moved value if true { val = None; } else { } } } fn test2() { let mut foo = Some(Struct); let _x = foo.clone().unwrap(); if true { foo = Some(Struct); } else { } let _y = foo; //~ ERROR use of moved value: `foo` } fn test3() { let mut foo = Some(Struct2); let _x = foo.clone().unwrap(); if true { foo = Some(Struct2); } else if true { foo = Some(Struct2); } else if true { foo = Some(Struct2); } else if true { foo = Some(Struct2); } else { } let _y = foo; //~ ERROR use of moved value: `foo` } fn main() {}