// run-rustfix #![allow(unused)] #![warn(clippy::clear_with_drain)] fn range() { let mut v = vec![1, 2, 3]; let iter = v.drain(0..v.len()); // Yay let mut v = vec![1, 2, 3]; let n = v.drain(0..v.len()).count(); // Yay let mut v = vec![1, 2, 3]; let iter = v.drain(usize::MIN..v.len()); // Yay let n = iter.count(); let mut v = vec![1, 2, 3]; v.clear(); // Nay let mut v = vec![1, 2, 3]; v.clear(); // Nay } fn range_from() { let mut v = vec![1, 2, 3]; let iter = v.drain(0..); // Yay let mut v = vec![1, 2, 3]; let mut iter = v.drain(0..); // Yay let next = iter.next(); let mut v = vec![1, 2, 3]; let next = v.drain(usize::MIN..).next(); // Yay let mut v = vec![1, 2, 3]; v.clear(); // Nay let mut v = vec![1, 2, 3]; v.clear(); // Nay } fn range_full() { let mut v = vec![1, 2, 3]; let iter = v.drain(..); // Yay let mut v = vec![1, 2, 3]; // Yay for x in v.drain(..) { let y = format!("x = {x}"); } let mut v = vec![1, 2, 3]; v.clear(); // Nay } fn range_to() { let mut v = vec![1, 2, 3]; let iter = v.drain(..v.len()); // Yay let mut v = vec![1, 2, 3]; let iter = v.drain(..v.len()); // Yay for x in iter { let y = format!("x = {x}"); } let mut v = vec![1, 2, 3]; v.clear(); // Nay } fn partial_drains() { let mut v = vec![1, 2, 3]; v.drain(1..); // Yay let mut v = vec![1, 2, 3]; v.drain(1..).max(); // Yay let mut v = vec![1, 2, 3]; v.drain(..v.len() - 1); // Yay let mut v = vec![1, 2, 3]; v.drain(..v.len() - 1).min(); // Yay let mut v = vec![1, 2, 3]; v.drain(1..v.len() - 1); // Yay let mut v = vec![1, 2, 3]; let w: Vec = v.drain(1..v.len() - 1).collect(); // Yay } fn main() {}