mirror of
https://github.com/servo/servo.git
synced 2025-06-06 16:45:39 +00:00
Add a Target
struct for mapfold_reduce_into
call
This commit is contained in:
parent
cfdd23ac16
commit
78bfa45eab
1 changed files with 21 additions and 17 deletions
|
@ -157,25 +157,29 @@ impl BlockContainer {
|
||||||
builder.end_ongoing_inline_formatting_context();
|
builder.end_ongoing_inline_formatting_context();
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut contains_floats = builder.contains_floats;
|
type Intermediate<Node> = IntermediateBlockLevelBox<Node>;
|
||||||
|
#[derive(Default)]
|
||||||
|
struct Target {
|
||||||
|
contains_floats: ContainsFloats,
|
||||||
|
}
|
||||||
|
let mut target = Target {
|
||||||
|
contains_floats: builder.contains_floats,
|
||||||
|
};
|
||||||
let request_content_sizes = false; // FIXME
|
let request_content_sizes = false; // FIXME
|
||||||
let container = BlockContainer::BlockLevelBoxes(
|
let iter = builder.block_level_boxes.into_par_iter();
|
||||||
builder
|
let iter = iter.mapfold_reduce_into(
|
||||||
.block_level_boxes
|
&mut target,
|
||||||
.into_par_iter()
|
|target, (intermediate, box_slot): (Intermediate<_>, BoxSlot<'_>)| {
|
||||||
.mapfold_reduce_into(
|
let (block_level_box, box_contains_floats) =
|
||||||
&mut contains_floats,
|
intermediate.finish(context, request_content_sizes);
|
||||||
|contains_floats, (intermediate, box_slot): (IntermediateBlockLevelBox<_>, BoxSlot<'_>)| {
|
target.contains_floats |= box_contains_floats;
|
||||||
let (block_level_box, box_contains_floats) = intermediate.finish(context, request_content_sizes);
|
|
||||||
*contains_floats |= box_contains_floats;
|
|
||||||
box_slot.set(LayoutBox::BlockLevel(block_level_box.clone()));
|
box_slot.set(LayoutBox::BlockLevel(block_level_box.clone()));
|
||||||
block_level_box
|
block_level_box
|
||||||
},
|
},
|
||||||
|left, right| *left |= right,
|
|left, right| left.contains_floats |= right.contains_floats,
|
||||||
)
|
|
||||||
.collect(),
|
|
||||||
);
|
);
|
||||||
(container, contains_floats)
|
let container = BlockContainer::BlockLevelBoxes(iter.collect());
|
||||||
|
(container, target.contains_floats)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue