| #![allow(clippy::useless_vec, clippy::manual_repeat_n)] |
| |
| use std::iter::repeat; |
| fn main() { |
| resize_vector(); |
| extend_vector(); |
| mixed_extend_resize_vector(); |
| from_empty_vec(); |
| } |
| |
| fn extend_vector() { |
| // Extend with constant expression |
| let len = 300; |
| let mut vec1 = vec![0; len]; |
| |
| // Extend with len expression |
| let mut vec2 = vec![0; 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![0; len]; |
| } |
| |
| 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![0; 30]; |
| |
| let mut extend_vec = vec![0; 30]; |
| } |
| |
| fn resize_vector() { |
| // Resize with constant expression |
| let len = 300; |
| let mut vec1 = vec![0; len]; |
| |
| // Resize mismatch len |
| let mut vec2 = Vec::with_capacity(200); |
| vec2.resize(10, 0); |
| |
| // Resize with len expression |
| let mut vec3 = vec![0; len - 10]; |
| |
| let mut vec4 = vec![0; len]; |
| |
| // Reinitialization should be warned |
| vec1 = vec![0; 10]; |
| } |
| |
| fn from_empty_vec() { |
| // Resize with constant expression |
| let len = 300; |
| let mut vec1 = vec![0; len]; |
| |
| // Resize with len expression |
| let mut vec3 = vec![0; len - 10]; |
| |
| // Reinitialization should be warned |
| vec1 = vec![0; 10]; |
| |
| vec1 = vec![0; 10]; |
| |
| 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)); |
| } |