clargs 0.2.1

A command-line arguments parsing library.
Documentation
use std::marker::PhantomData;
use std::str::FromStr;
use std::any::Any;


#[derive(Default)]
pub struct ParamParserTyped<T: 'static + FromStr> {
    phantom: PhantomData<T>
}

pub trait ParamParser {
    fn parse(&self, value: &str) -> Option<Box<Any>>;
}


impl<T: 'static + FromStr> ParamParserTyped<T> {
    pub fn new() -> ParamParserTyped<T> {
        ParamParserTyped::<T> {
            phantom: PhantomData::<T>::default(),
        }
    }
}

impl<T: 'static + FromStr> ParamParser for ParamParserTyped<T> {
    fn parse(&self, value: &str) -> Option<Box<Any>> {
        match value.parse::<T>() {
            Ok(value) => Some(Box::new(value)),
            Err(_) => None,
        }
    }
}