fn main() -> Result<(), lexopt::Error> {
use lexopt::prelude::*;
let mut parser = lexopt::Parser::from_env();
let mut free = Vec::new();
while let Some(arg) = parser.next()? {
match arg {
Short('n') | Long("number") => {
let num: u16 = parser.value()?.parse()?;
println!("Got number {}", num);
}
Long("shout") => {
println!("Got --shout");
}
Value(val) => {
free.push(val);
free.extend(std::iter::from_fn(|| parser.value().ok()));
}
_ => return Err(arg.unexpected()),
}
}
println!("Got free args {:?}", free);
Ok(())
}