use options::Options;
use std::str::FromStr;
#[derive(Debug)]
pub struct Arguments {
pub program: String,
pub options: Options,
pub orphans: Vec<String>,
}
impl Arguments {
pub fn get<T: FromStr>(&self, name: &str) -> Option<T> {
self.options
.get_ref::<Vec<String>>(name)
.and_then(|strings| strings.last().and_then(|string| string.parse().ok()))
}
pub fn get_all<T: FromStr>(&self, name: &str) -> Option<Vec<T>> {
self.options
.get_ref::<Vec<String>>(name)
.and_then(|strings| {
strings
.iter()
.map(|string| string.parse().ok())
.collect::<Option<Vec<_>>>()
})
}
}