equal
deleted
inserted
replaced
77 Ok(this) |
77 Ok(this) |
78 } |
78 } |
79 |
79 |
80 #[inline] |
80 #[inline] |
81 fn conditionally_push_rev(&mut self, rev: Revision) { |
81 fn conditionally_push_rev(&mut self, rev: Revision) { |
82 if self.stoprev <= rev && !self.seen.contains(&rev) { |
82 if self.stoprev <= rev && self.seen.insert(rev) { |
83 self.seen.insert(rev); |
|
84 self.visit.push(rev); |
83 self.visit.push(rev); |
85 } |
84 } |
86 } |
85 } |
87 |
86 |
88 /// Consumes partially the iterator to tell if the given target |
87 /// Consumes partially the iterator to tell if the given target |
152 }; |
151 }; |
153 let [p1, p2] = match self.graph.parents(current) { |
152 let [p1, p2] = match self.graph.parents(current) { |
154 Ok(ps) => ps, |
153 Ok(ps) => ps, |
155 Err(e) => return Some(Err(e)), |
154 Err(e) => return Some(Err(e)), |
156 }; |
155 }; |
157 if p1 < self.stoprev || self.seen.contains(&p1) { |
156 if p1 < self.stoprev || !self.seen.insert(p1) { |
158 self.visit.pop(); |
157 self.visit.pop(); |
159 } else { |
158 } else { |
160 *(self.visit.peek_mut().unwrap()) = p1; |
159 *(self.visit.peek_mut().unwrap()) = p1; |
161 self.seen.insert(p1); |
|
162 }; |
160 }; |
163 |
161 |
164 self.conditionally_push_rev(p2); |
162 self.conditionally_push_rev(p2); |
165 Some(Ok(current)) |
163 Some(Ok(current)) |
166 } |
164 } |