message: Prefer `drain` over manual implementation of `drain`
diff: @@ -297,8 +297,7 @@ impl<'tcx> Stack {
  // Remove everything above the write-compatible items, like a proper stack. This makes sure read-only and unique
  // pointers become invalid on write accesses (ensures F2a, and ensures U2 for write accesses).
  let first_incompatible_idx = self.find_first_write_incompaible(granting_idx);
  - while self.borrows.len() > first_incompatible_idx {
  - let item = self.borrows.pop().unwrap();
  + for item in self.borrows.drain(first_incompatible_idx..).rev() {
  trace!("access: popping item {}", item);
  Stack::check_protector(&item, Some(tag), global)?;
  }
  @@ -340,8 +339,7 @@ impl<'tcx> Stack {
  )))?;
  // Step 2: Remove all items. Also checks for protectors.
  - while self.borrows.len() > 0 {
  - let item = self.borrows.pop().unwrap();
  + for item in self.borrows.drain(..).rev() {
  Stack::check_protector(&item, None, global)?;
  }
  