Slide 23
Slide 23 text
patch
23
fn find_removed_nodes
(old: &VNode, new: &VNode) ->
Vec {
let mut removed_nodes = Vec::new();
find_removed_nodes_recursive
(&old.element_type,
&new.element_type, &mut removed_nodes);
removed_nodes
}
fn find_removed_nodes_recursive
(
old: &ElementType,
new: &ElementType,
removed_nodes: &mut Vec,
) {
if old != new {
if !old.is_empty_text_node
() {
removed_nodes.push(VNode {
element_type: old.clone(),
});
}
} else if let ElementType::Element(_, _,
old_children) = old {
if let ElementType::Element(_, _, new_children)
= new {
for (old_child, new_child) in
old_children.iter().zip(new_children.iter()) {
find_removed_nodes_recursive
(old_child,
new_child, removed_nodes);
}
}
}
}