error[E0382]: use of moved value
  --> $DIR/issue-83760.rs:10:20
   |
LL |     while let Some(foo) = val {
   |                    ^^^ value moved here, in previous iteration of loop
LL |         if true {
LL |             val = None;
   |             ---------- this reinitialization might get skipped
   |
   = note: move occurs because value has type `Struct`, which does not implement the `Copy` trait
help: borrow this binding in the pattern to avoid moving the value
   |
LL |     while let Some(ref foo) = val {
   |                    +++

error[E0382]: use of moved value: `foo`
  --> $DIR/issue-83760.rs:26:14
   |
LL |     let mut foo = Some(Struct);
   |         ------- move occurs because `foo` has type `Option<Struct>`, which does not implement the `Copy` trait
LL |     let _x = foo.unwrap();
   |                  -------- `foo` moved due to this method call
LL |     if true {
LL |         foo = Some(Struct);
   |         ------------------ this reinitialization might get skipped
...
LL |     let _y = foo;
   |              ^^^ value used here after move
   |
note: `Option::<T>::unwrap` takes ownership of the receiver `self`, which moves `foo`
  --> $SRC_DIR/core/src/option.rs:LL:COL
help: you could `clone` the value and consume it, if the `Struct: Clone` trait bound could be satisfied
   |
LL |     let _x = foo.clone().unwrap();
   |                 ++++++++
help: consider annotating `Struct` with `#[derive(Clone)]`
   |
LL + #[derive(Clone)]
LL | struct Struct;
   |

error[E0382]: use of moved value: `foo`
  --> $DIR/issue-83760.rs:42:14
   |
LL |     let mut foo = Some(Struct2);
   |         ------- move occurs because `foo` has type `Option<Struct2>`, which does not implement the `Copy` trait
LL |     let _x = foo.unwrap();
   |                  -------- `foo` moved due to this method call
...
LL |     let _y = foo;
   |              ^^^ value used here after move
   |
note: these 3 reinitializations and 1 other might get skipped
  --> $DIR/issue-83760.rs:35:9
   |
LL |         foo = Some(Struct2);
   |         ^^^^^^^^^^^^^^^^^^^
LL |     } else if true {
LL |         foo = Some(Struct2);
   |         ^^^^^^^^^^^^^^^^^^^
LL |     } else if true {
LL |         foo = Some(Struct2);
   |         ^^^^^^^^^^^^^^^^^^^
note: `Option::<T>::unwrap` takes ownership of the receiver `self`, which moves `foo`
  --> $SRC_DIR/core/src/option.rs:LL:COL
help: you could `clone` the value and consume it, if the `Struct2: Clone` trait bound could be satisfied
   |
LL |     let _x = foo.clone().unwrap();
   |                 ++++++++
help: consider annotating `Struct2` with `#[derive(Clone)]`
   |
LL + #[derive(Clone)]
LL | struct Struct2;
   |

error: aborting due to 3 previous errors

For more information about this error, try `rustc --explain E0382`.
