diff --git a/library/alloc/benches/vec.rs b/library/alloc/benches/vec.rs index 409bc49b031..a11b946c44b 100644 --- a/library/alloc/benches/vec.rs +++ b/library/alloc/benches/vec.rs @@ -501,6 +501,21 @@ fn bench_in_place_recycle(b: &mut test::Bencher) { }); } +#[derive(Clone)] +struct Droppable(usize); + +impl Drop for Droppable { + fn drop(&mut self) { + black_box(self); + } +} + +#[bench] +fn bench_in_place_collect_droppable(b: &mut test::Bencher) { + let v: Vec = std::iter::repeat_with(|| Droppable(0)).take(1000).collect(); + b.iter(|| v.clone().into_iter().skip(100).collect::>()) +} + #[bench] fn bench_chain_collect(b: &mut test::Bencher) { let data = black_box([0; LEN]);