Skip to main content

noshell_parser/parser/
values.rs

1//! Values.
2
3/// Iterator over argument values.
4#[derive(Clone, Debug, PartialEq)]
5pub struct Values<'a> {
6    slice: &'a [&'a str],
7}
8
9impl<'a> Values<'a> {
10    /// Create a new value iterator.
11    pub fn new(slice: &'a [&'a str]) -> Self {
12        Values { slice }
13    }
14
15    /// Get an iterator.
16    pub fn iter(&self) -> impl Iterator<Item = &'a str> {
17        self.slice.iter().copied()
18    }
19
20    /// Create an empty value iterator.
21    pub fn empty() -> Self {
22        Self::new(&[])
23    }
24}
25
26/// The number of expected values on a given argument.
27#[derive(Debug, Clone, Copy, PartialEq, Eq, PartialOrd, Ord, Hash)]
28pub enum AtMost {
29    /// No value expected.
30    Zero,
31
32    /// Exactly one value expected.
33    One,
34
35    /// One or more values expected.
36    Many,
37}