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}