| #![allow(clippy::useless_vec, clippy::manual_repeat_n)] | |
| use std::iter::repeat; | |
| fn main() {} | |
| fn extend_vector() { | |
| // Extend with constant expression | |
| let len = 300; | |
| let mut vec1 = Vec::with_capacity(len); | |
| //~^ slow_vector_initialization | |
| vec1.extend(repeat(0).take(len)); | |
| // Extend with len expression | |
| let mut vec2 = Vec::with_capacity(len - 10); | |
| //~^ slow_vector_initialization | |
| vec2.extend(repeat(0).take(len - 10)); | |
| // Extend with mismatching expression should not be warned | |
| let mut vec3 = Vec::with_capacity(24322); | |
| vec3.extend(repeat(0).take(2)); | |
| let mut vec4 = Vec::with_capacity(len); | |
| //~^ slow_vector_initialization | |
| vec4.extend(repeat(0).take(vec4.capacity())); | |
| } | |
| fn mixed_extend_resize_vector() { | |
| // Mismatching len | |
| let mut mismatching_len = Vec::with_capacity(30); | |
| mismatching_len.extend(repeat(0).take(40)); | |
| // Slow initialization | |
| let mut resized_vec = Vec::with_capacity(30); | |
| //~^ slow_vector_initialization | |
| resized_vec.resize(30, 0); | |
| let mut extend_vec = Vec::with_capacity(30); | |
| //~^ slow_vector_initialization | |
| extend_vec.extend(repeat(0).take(30)); | |
| } | |
| fn resize_vector() { | |
| // Resize with constant expression | |
| let len = 300; | |
| let mut vec1 = Vec::with_capacity(len); | |
| //~^ slow_vector_initialization | |
| vec1.resize(len, 0); | |
| // Resize mismatch len | |
| let mut vec2 = Vec::with_capacity(200); | |
| vec2.resize(10, 0); | |
| // Resize with len expression | |
| let mut vec3 = Vec::with_capacity(len - 10); | |
| //~^ slow_vector_initialization | |
| vec3.resize(len - 10, 0); | |
| let mut vec4 = Vec::with_capacity(len); | |
| //~^ slow_vector_initialization | |
| vec4.resize(vec4.capacity(), 0); | |
| // Reinitialization should be warned | |
| vec1 = Vec::with_capacity(10); | |
| //~^ slow_vector_initialization | |
| vec1.resize(10, 0); | |
| } | |
| fn from_empty_vec() { | |
| // Resize with constant expression | |
| let len = 300; | |
| let mut vec1 = Vec::new(); | |
| //~^ slow_vector_initialization | |
| vec1.resize(len, 0); | |
| // Resize with len expression | |
| let mut vec3 = Vec::new(); | |
| //~^ slow_vector_initialization | |
| vec3.resize(len - 10, 0); | |
| // Reinitialization should be warned | |
| vec1 = Vec::new(); | |
| //~^ slow_vector_initialization | |
| vec1.resize(10, 0); | |
| vec1 = vec![]; | |
| //~^ slow_vector_initialization | |
| vec1.resize(10, 0); | |
| macro_rules! x { | |
| () => { | |
| vec![] | |
| }; | |
| } | |
| // `vec![]` comes from another macro, don't warn | |
| vec1 = x!(); | |
| vec1.resize(10, 0); | |
| } | |
| fn do_stuff(vec: &mut [u8]) {} | |
| fn extend_vector_with_manipulations_between() { | |
| let len = 300; | |
| let mut vec1: Vec<u8> = Vec::with_capacity(len); | |
| do_stuff(&mut vec1); | |
| vec1.extend(repeat(0).take(len)); | |
| } |