summaryrefslogtreecommitdiffstats
path: root/toolkit/components/xulstore/src/iter.rs
blob: 06e0ebf17577e59639a81e3b5d266f690a895bcb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
/* This Source Code Form is subject to the terms of the Mozilla Public
 * License, v. 2.0. If a copy of the MPL was not distributed with this
 * file, You can obtain one at http://mozilla.org/MPL/2.0/. */

use crate::error::{XULStoreError, XULStoreResult};
use std::vec::IntoIter;

pub struct XULStoreIterator {
    values: IntoIter<String>,
}

impl XULStoreIterator {
    pub(crate) fn new(values: IntoIter<String>) -> Self {
        Self { values }
    }

    pub(crate) fn has_more(&self) -> bool {
        !self.values.as_slice().is_empty()
    }

    pub(crate) fn get_next(&mut self) -> XULStoreResult<String> {
        Ok(self.values.next().ok_or(XULStoreError::IterationFinished)?)
    }
}