2023-03-21 16:46:59 -05:00
|
|
|
|
// run-rustfix
|
2023-03-18 04:43:02 -05:00
|
|
|
|
#![allow(unused)]
|
|
|
|
|
#![warn(clippy::clear_with_drain)]
|
|
|
|
|
|
2023-04-06 00:49:59 -05:00
|
|
|
|
use std::collections::BinaryHeap;
|
|
|
|
|
use std::collections::HashMap;
|
|
|
|
|
use std::collections::HashSet;
|
|
|
|
|
use std::collections::VecDeque;
|
|
|
|
|
|
2023-03-18 08:45:57 -05:00
|
|
|
|
fn range() {
|
2023-03-23 16:29:30 -05:00
|
|
|
|
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
|
|
|
|
|
|
2023-03-26 11:59:20 -05:00
|
|
|
|
let mut v = vec![1, 2, 3];
|
2023-03-27 04:11:40 -05:00
|
|
|
|
let iter = v.drain(usize::MIN..v.len()); // Yay
|
|
|
|
|
let n = iter.count();
|
2023-03-26 11:59:20 -05:00
|
|
|
|
|
2023-03-23 16:29:30 -05:00
|
|
|
|
let mut v = vec![1, 2, 3];
|
2023-03-18 08:45:57 -05:00
|
|
|
|
v.drain(0..v.len()); // Nay
|
2023-03-26 11:59:20 -05:00
|
|
|
|
|
|
|
|
|
let mut v = vec![1, 2, 3];
|
|
|
|
|
v.drain(usize::MIN..v.len()); // Nay
|
2023-03-18 08:45:57 -05:00
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
fn range_from() {
|
2023-03-23 16:29:30 -05:00
|
|
|
|
let mut v = vec![1, 2, 3];
|
|
|
|
|
let iter = v.drain(0..); // Yay
|
|
|
|
|
|
|
|
|
|
let mut v = vec![1, 2, 3];
|
2023-03-27 04:11:40 -05:00
|
|
|
|
let mut iter = v.drain(0..); // Yay
|
|
|
|
|
let next = iter.next();
|
2023-03-23 16:29:30 -05:00
|
|
|
|
|
2023-03-26 11:59:20 -05:00
|
|
|
|
let mut v = vec![1, 2, 3];
|
|
|
|
|
let next = v.drain(usize::MIN..).next(); // Yay
|
|
|
|
|
|
2023-03-23 16:29:30 -05:00
|
|
|
|
let mut v = vec![1, 2, 3];
|
2023-03-18 08:45:57 -05:00
|
|
|
|
v.drain(0..); // Nay
|
2023-03-26 11:59:20 -05:00
|
|
|
|
|
|
|
|
|
let mut v = vec![1, 2, 3];
|
|
|
|
|
v.drain(usize::MIN..); // Nay
|
2023-03-18 08:45:57 -05:00
|
|
|
|
}
|
2023-03-18 04:43:02 -05:00
|
|
|
|
|
2023-03-18 08:45:57 -05:00
|
|
|
|
fn range_full() {
|
2023-03-23 16:29:30 -05:00
|
|
|
|
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];
|
2023-03-18 08:45:57 -05:00
|
|
|
|
v.drain(..); // Nay
|
2023-03-18 04:43:02 -05:00
|
|
|
|
}
|
2023-03-18 08:45:57 -05:00
|
|
|
|
|
|
|
|
|
fn range_to() {
|
2023-03-23 16:29:30 -05:00
|
|
|
|
let mut v = vec![1, 2, 3];
|
|
|
|
|
let iter = v.drain(..v.len()); // Yay
|
|
|
|
|
|
|
|
|
|
let mut v = vec![1, 2, 3];
|
2023-03-27 04:11:40 -05:00
|
|
|
|
let iter = v.drain(..v.len()); // Yay
|
|
|
|
|
for x in iter {
|
2023-03-23 16:29:30 -05:00
|
|
|
|
let y = format!("x = {x}");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
let mut v = vec![1, 2, 3];
|
2023-03-18 08:45:57 -05:00
|
|
|
|
v.drain(..v.len()); // Nay
|
|
|
|
|
}
|
|
|
|
|
|
2023-03-21 16:09:26 -05:00
|
|
|
|
fn partial_drains() {
|
|
|
|
|
let mut v = vec![1, 2, 3];
|
|
|
|
|
v.drain(1..); // Yay
|
2023-03-23 16:29:30 -05:00
|
|
|
|
let mut v = vec![1, 2, 3];
|
|
|
|
|
v.drain(1..).max(); // Yay
|
2023-03-21 16:09:26 -05:00
|
|
|
|
|
|
|
|
|
let mut v = vec![1, 2, 3];
|
|
|
|
|
v.drain(..v.len() - 1); // Yay
|
2023-03-23 16:29:30 -05:00
|
|
|
|
let mut v = vec![1, 2, 3];
|
|
|
|
|
v.drain(..v.len() - 1).min(); // Yay
|
2023-03-21 16:09:26 -05:00
|
|
|
|
|
|
|
|
|
let mut v = vec![1, 2, 3];
|
|
|
|
|
v.drain(1..v.len() - 1); // Yay
|
2023-03-23 16:29:30 -05:00
|
|
|
|
let mut v = vec![1, 2, 3];
|
|
|
|
|
let w: Vec<i8> = v.drain(1..v.len() - 1).collect(); // Yay
|
2023-03-21 16:09:26 -05:00
|
|
|
|
}
|
|
|
|
|
|
2023-04-06 00:49:59 -05:00
|
|
|
|
fn main() {
|
|
|
|
|
let mut deque: VecDeque<_> = [1, 2, 3].into();
|
|
|
|
|
deque.drain(..);
|
|
|
|
|
|
|
|
|
|
let mut set = HashSet::from([1, 2, 3]);
|
|
|
|
|
set.drain();
|
|
|
|
|
|
|
|
|
|
let mut a = HashMap::new();
|
|
|
|
|
a.insert(1, "a");
|
|
|
|
|
a.insert(2, "b");
|
|
|
|
|
a.drain();
|
|
|
|
|
|
|
|
|
|
let mut heap = BinaryHeap::from([1, 3]);
|
|
|
|
|
heap.drain();
|
|
|
|
|
|
|
|
|
|
// Not firing for now because `String` is not reckognized by `is_type_diagnostic_item`
|
|
|
|
|
let mut s = String::from("α is alpha, β is beta");
|
|
|
|
|
s.drain(..);
|
|
|
|
|
}
|