| //@ 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() {} |