diff --git a/library/alloc/benches/vec.rs b/library/alloc/benches/vec.rs index 870bb3d1402..409bc49b031 100644 --- a/library/alloc/benches/vec.rs +++ b/library/alloc/benches/vec.rs @@ -481,6 +481,26 @@ bench_in_place![ bench_in_place_u128_i1_1000, u128, 1000, 1 ]; +#[bench] +fn bench_in_place_recycle(b: &mut test::Bencher) { + let mut data = vec![0; 1000]; + + b.iter(|| { + let tmp = std::mem::replace(&mut data, Vec::new()); + std::mem::replace( + &mut data, + black_box( + tmp.into_iter() + .enumerate() + .map(|(idx, e)| idx.wrapping_add(e)) + .fuse() + .peekable() + .collect::>(), + ), + ); + }); +} + #[bench] fn bench_chain_collect(b: &mut test::Bencher) { let data = black_box([0; LEN]);