clean up view code

This commit is contained in:
Evan Almloff committed 2023-01-22 21:06:59 -06:00
1 parent 4738352955
commit 3279068569
2 files changed
+13 -49

No files matched your search

+5 -39
View File
@@ -198,14 +198,12 @@ pub(crate) struct DynamicallyBorrowedTree<'a> {
}
impl<'a> DynamicallyBorrowedTree<'a> {
pub fn with_view(
pub fn view(
&self,
immutable: impl IntoIterator<Item = TypeId>,
mutable: impl IntoIterator<Item = TypeId>,
mut f: impl FnMut(TreeStateView),
) {
) -> TreeStateView<'_, 'a> {
let nodes_data = self.node_slab();
let nodes_data: &SlabStorage<Node> = &nodes_data;
let mut nodes = FxHashMap::default();
for id in immutable {
nodes.insert(id, MaybeRead::Read(self.nodes.get_slab(id).unwrap()));
@@ -213,10 +211,8 @@ impl<'a> DynamicallyBorrowedTree<'a> {
for id in mutable {
nodes.insert(id, MaybeRead::Write(self.nodes.get_slab_mut(id).unwrap()));
}
{
let view = TreeStateView { nodes_data, nodes };
f(view)
}
TreeStateView { nodes_data, nodes }
}
fn node_slab(&self) -> MappedRwLockReadGuard<SlabStorage<Node>> {
@@ -244,7 +240,7 @@ impl<'a, 'b> AnyMapLike<'a> for TreeStateViewEntry<'a, 'b> {
}
pub struct TreeStateView<'a, 'b> {
nodes_data: &'a SlabStorage<Node>,
nodes_data: MappedRwLockReadGuard<'a, SlabStorage<Node>>,
nodes: FxHashMap<TypeId, MaybeRead<'a, 'b>>,
}
@@ -441,36 +437,6 @@ fn deletion() {
assert_eq!(tree.read::<i32>(after), None);
}
// #[test]
// fn traverse_depth_first() {
// let mut tree = Tree::new();
// let parent = tree.root();
// tree.insert(parent, 0);
// let mut child1 = tree.create_node();
// child1.insert(1);
// let child1 = child1.id();
// tree.add_child(parent, child1);
// let mut grandchild1 = tree.create_node();
// grandchild1.insert(2);
// let grandchild1 = grandchild1.id();
// tree.add_child(child1, grandchild1);
// let mut child2 = tree.create_node();
// child2.insert(3);
// let child2 = child2.id();
// tree.add_child(parent, child2);
// let mut grandchild2 = tree.create_node();
// grandchild2.insert(4);
// let grandchild2 = grandchild2.id();
// tree.add_child(child2, grandchild2);
// let view = tree.state_view::<i32>();
// let mut node_count = 0;
// view.traverse_depth_first(move |node| {
// assert_eq!(*node, node_count);
// node_count += 1;
// });
// }
#[derive(Debug)]
pub(crate) struct SlabStorage<T> {
data: Vec<Option<T>>,