Remove the now single-field Accumulator struct

This commit is contained in:
Simon Sapin 2020-06-19 15:30:23 +02:00
parent 51c388fe1c
commit 5fed956d65

View file

@ -198,15 +198,10 @@ impl BlockContainer {
builder.end_ongoing_inline_formatting_context(); builder.end_ongoing_inline_formatting_context();
} }
struct Accumulator { let mut contains_floats = builder.contains_floats;
contains_floats: ContainsFloats, let mapfold = |contains_floats: &mut ContainsFloats, creator: BlockLevelJob<'dom, _>| {
}
let mut acc = Accumulator {
contains_floats: builder.contains_floats,
};
let mapfold = |acc: &mut Accumulator, creator: BlockLevelJob<'dom, _>| {
let (block_level_box, box_contains_floats) = creator.finish(context); let (block_level_box, box_contains_floats) = creator.finish(context);
acc.contains_floats |= box_contains_floats; *contains_floats |= box_contains_floats;
block_level_box block_level_box
}; };
let block_level_boxes = if context.use_rayon { let block_level_boxes = if context.use_rayon {
@ -214,13 +209,11 @@ impl BlockContainer {
.block_level_boxes .block_level_boxes
.into_par_iter() .into_par_iter()
.mapfold_reduce_into( .mapfold_reduce_into(
&mut acc, &mut contains_floats,
mapfold, mapfold,
|| Accumulator { || ContainsFloats::No,
contains_floats: ContainsFloats::No,
},
|left, right| { |left, right| {
left.contains_floats |= right.contains_floats; *left |= right;
}, },
) )
.collect() .collect()
@ -228,12 +221,11 @@ impl BlockContainer {
builder builder
.block_level_boxes .block_level_boxes
.into_iter() .into_iter()
.map(|x| mapfold(&mut acc, x)) .map(|x| mapfold(&mut contains_floats, x))
.collect() .collect()
}; };
let container = BlockContainer::BlockLevelBoxes(block_level_boxes); let container = BlockContainer::BlockLevelBoxes(block_level_boxes);
let Accumulator { contains_floats } = acc;
(container, contains_floats) (container, contains_floats)
} }
} }