diff --git a/components/layout_2020/flow/mod.rs b/components/layout_2020/flow/mod.rs index d57d60da8d1..cccce1ee3aa 100644 --- a/components/layout_2020/flow/mod.rs +++ b/components/layout_2020/flow/mod.rs @@ -7,7 +7,7 @@ use app_units::{Au, MAX_AU}; use inline::InlineFormattingContext; -use rayon::iter::{IntoParallelRefIterator, ParallelIterator}; +use rayon::iter::{IndexedParallelIterator, IntoParallelRefIterator, ParallelIterator}; use servo_arc::Arc; use style::Zero; use style::computed_values::clear::T as StyleClear; @@ -662,7 +662,10 @@ fn layout_block_level_children_in_parallel( ) -> Vec { let collects_for_nearest_positioned_ancestor = positioning_context.collects_for_nearest_positioned_ancestor(); - let layout_results: Vec<(Fragment, PositioningContext)> = child_boxes + let mut layout_results: Vec<(Fragment, PositioningContext)> = + Vec::with_capacity(child_boxes.len()); + + child_boxes .par_iter() .map(|child_box| { let mut child_positioning_context = @@ -676,7 +679,7 @@ fn layout_block_level_children_in_parallel( ); (fragment, child_positioning_context) }) - .collect(); + .collect_into_vec(&mut layout_results); layout_results .into_iter()