summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMatthias Beyer <mail@beyermatthias.de>2020-02-23 10:59:24 +0100
committerMatthias Beyer <mail@beyermatthias.de>2020-02-23 10:59:24 +0100
commit452c26cc37ea2b59660b98252f83353bb5c9d0be (patch)
treeb1b968fa60f436cc80c3f0135984564bd0fd7e01
parent731902c6c5827ab1acbcbb077555cf818cd6c5f5 (diff)
Let parent be optional
Signed-off-by: Matthias Beyer <mail@beyermatthias.de>
-rw-r--r--lib/etc/libimagutil/src/tree.rs20
1 files changed, 10 insertions, 10 deletions
diff --git a/lib/etc/libimagutil/src/tree.rs b/lib/etc/libimagutil/src/tree.rs
index 42bdd7cf..e8cc9136 100644
--- a/lib/etc/libimagutil/src/tree.rs
+++ b/lib/etc/libimagutil/src/tree.rs
@@ -94,7 +94,7 @@ pub trait IdGetter<T>
type ID: PartialEq + Sized;
fn get_id_for_node(&self, node: &T) -> Result<Self::ID>;
- fn get_id_for_parent_of(&self, node: &T) -> Result<Self::ID>;
+ fn get_id_for_parent_of(&self, node: &T) -> Result<Option<Self::ID>>;
}
pub struct TreeBuilder<'a, T, ID, IG>(&'a mut Tree<T>, IG)
@@ -110,15 +110,15 @@ impl<'a, T, ID, IG> TreeBuilder<'a, T, ID, IG>
pub fn build(&mut self) -> Result<()> {
let mut i = 0;
while let Some(node) = self.0.elements.get(i) {
- let parent_id = self.1.get_id_for_parent_of(&node.element)?;
-
- if let Some(parent_idx) = self.find_node_idx(&parent_id)? {
- if let Some(parent) = self.0.elements.get_mut(parent_idx) {
- parent.childs_indexes.push(i);
- }
-
- if let Some(child) = self.0.elements.get_mut(i) {
- child.parent_idx = Some(parent_idx);
+ if let Some(parent_id) = self.1.get_id_for_parent_of(&node.element)? {
+ if let Some(parent_idx) = self.find_node_idx(&parent_id)? {
+ if let Some(parent) = self.0.elements.get_mut(parent_idx) {
+ parent.childs_indexes.push(i);
+ }
+
+ if let Some(child) = self.0.elements.get_mut(i) {
+ child.parent_idx = Some(parent_idx);
+ }
}
}