ui: make StackVec return an Option<T>

embed
Manos Pitsidianakis 2019-05-01 13:47:08 +03:00
parent 4ae8cbadbf
commit 3415a382a1
Signed by: Manos Pitsidianakis
GPG Key ID: 73627C2F690DF710
2 changed files with 7 additions and 5 deletions

View File

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

View File

@ -162,14 +162,17 @@ impl<T: Default + Copy + std::fmt::Debug> StackVec<T> {
}
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() {
self.len -= 1;
self.heap_vec.pop().unwrap()
self.heap_vec.pop()
} else {
let ret = self.array[self.len - 1];
self.len = self.len - 1;
ret
Some(ret)
}
}
pub(crate) fn len(&self) -> usize {