1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
use std::env;
use core::result::Result;
#[derive(Debug)]
pub enum Error {
ArgumentNotFound,
}
pub struct Parser {
args: Vec<String>,
}
impl<'a> Parser {
pub fn new() -> Self {
Parser { args: env::args().collect() }
}
pub fn get(&mut self, arg: &str, hasval: bool) -> Result<Option<&String>, Error> {
let mut it = self.args.iter();
let v = it.next();
loop {
if let Some(v) = it.next() {
if v == arg {
return match hasval {
true => Ok(it.next()),
_ => Ok(None),
};
}
} else {
return Err(Error::ArgumentNotFound);
}
}
}
}