#![warn(clippy::extend_with_drain)] #![allow(clippy::iter_with_drain)] use std::collections::BinaryHeap; fn main() { //gets linted let mut vec1 = vec![0u8; 1024]; let mut vec2: std::vec::Vec<u8> = Vec::new(); vec2.extend(vec1.drain(..)); let mut vec3 = vec![0u8; 1024]; let mut vec4: std::vec::Vec<u8> = Vec::new(); vec4.extend(vec3.drain(..)); let mut vec11: std::vec::Vec<u8> = Vec::new(); vec11.extend(return_vector().drain(..)); //won't get linted it doesn't move the entire content of a vec into another let mut test1 = vec![0u8, 10]; let mut test2: std::vec::Vec<u8> = Vec::new(); test2.extend(test1.drain(4..10)); let mut vec3 = vec![0u8; 104]; let mut vec7: std::vec::Vec<u8> = Vec::new(); vec3.append(&mut vec7); let mut vec5 = vec![0u8; 1024]; let mut vec6: std::vec::Vec<u8> = Vec::new(); vec5.extend(vec6.drain(..4)); let mut vec9: std::vec::Vec<u8> = Vec::new(); return_vector().append(&mut vec9); //won't get linted because it is not a vec let mut heap = BinaryHeap::from(vec![1, 3]); let mut heap2 = BinaryHeap::from(vec![]); heap2.extend(heap.drain()); let mut x = vec![0, 1, 2, 3, 5]; let ref_x = &mut x; let mut y = Vec::new(); y.extend(ref_x.drain(..)); } fn return_vector() -> Vec<u8> { let mut new_vector = vec![]; for i in 1..10 { new_vector.push(i) } new_vector }