This should be a `DefUse::Drop` so that we reject:    ```rust  struct A<'a>(&'a mut i32);    impl Drop for A<'_> {      fn drop(&mut self) {          *self.0 = 1;      }  }    fn main() {      let mut a = 0;      let mut b = 0;      let mut x = A(&mut a);      let y = &a;   //~ ERROR      x = A(&mut b);  }  ```    I'm a bit concerned that there's no test for this already.