Set up a tree container that allows for some certain traversals #79
|
@ -27,7 +27,7 @@ impl<T> Tree<T> {
|
|||
}
|
||||
|
||||
/// Use a breadth-first-search pattern to find a node, returning the node if found.
|
||||
pub fn find_bfs<'a, F>(&'a self, op: F) -> Option<Node<T>>
|
||||
pub fn find_bfs<F>(&self, op: F) -> Option<Node<T>>
|
||||
where
|
||||
F: FnOnce(&T) -> bool + Copy,
|
||||
{
|
||||
|
@ -84,14 +84,15 @@ impl<T> Node<T> {
|
|||
})))
|
||||
}
|
||||
|
||||
// I am copying the value because I don't have a mechanism for keeping the borrow ref active.
|
||||
// My next step is to figure out how to keep the borrow ref active so that I don't have to
|
||||
// clone the item. Then I could drop the Clone constraint.
|
||||
pub fn value<'a>(&'a self) -> Ref<T> {
|
||||
/// Immutably retrieve the data in this node.
|
||||
pub fn value<'a>(&self) -> Ref<T> {
|
||||
// Ref::map is not actually a member function. I don't know why this was done, other than
|
||||
// maybe to avoid conflicting with other `map` declarations. Why that is necessary when
|
||||
// Option::map exists as a member, I don't know.
|
||||
Ref::map(self.0.borrow(), |v| &v.value)
|
||||
}
|
||||
|
||||
pub fn children<'a>(&'a self) -> Ref<Vec<Node<T>>> {
|
||||
pub fn children<'a>(&self) -> Ref<Vec<Node<T>>> {
|
||||
Ref::map(self.0.borrow(), |v| &v.children)
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue