ui: make StackVec return an Option<T>

pull/234/head
Manos Pitsidianakis 5 years ago
parent 4ae8cbadbf
commit 3415a382a1
No known key found for this signature in database
GPG Key ID: 73627C2F690DF710

@ -153,8 +153,7 @@ impl Account {
for &c in f.children() { for &c in f.children() {
stack.push(c); stack.push(c);
} }
while !stack.is_empty() { while let Some(next) = stack.pop() {
let next = stack.pop();
folders_order.push(next); folders_order.push(next);
for c in ref_folders[&next].children() { for c in ref_folders[&next].children() {
stack.push(*c); stack.push(*c);

@ -162,14 +162,17 @@ impl<T: Default + Copy + std::fmt::Debug> StackVec<T> {
} }
self.len += 1; self.len += 1;
} }
pub(crate) fn pop(&mut self) -> T { pub(crate) fn pop(&mut self) -> Option<T> {
if self.len == 0 {
return None;
}
if self.len >= self.array.len() { if self.len >= self.array.len() {
self.len -= 1; self.len -= 1;
self.heap_vec.pop().unwrap() self.heap_vec.pop()
} else { } else {
let ret = self.array[self.len - 1]; let ret = self.array[self.len - 1];
self.len = self.len - 1; self.len = self.len - 1;
ret Some(ret)
} }
} }
pub(crate) fn len(&self) -> usize { pub(crate) fn len(&self) -> usize {

Loading…
Cancel
Save