getopt-long 0.3.0

Just as getopt_long in glibc. Dependence is nothing.
Documentation
// -- main.rs --

use getopt_long::*;

// --

fn main() -> OptResult<()> {
    let longopts = &[
        Opt::new(None, Some('v'), HasArg::NoArgument, "show version.").unwrap(),
        Opt::new(None, Some('h'), HasArg::NoArgument, "help information.").unwrap(),
        Opt::new(Some("add".to_owned()), Some('a'), HasArg::RequiredArgument, "add record to table.").unwrap(),
        Opt::new(Some("remove".to_owned()), Some('r'), HasArg::OptionalArgument, "remove record from table.").unwrap(),
        Opt::new(Some("modify".to_owned()), Some('m'), HasArg::NoArgument, "modify the record in table.").unwrap(),
        Opt::new(Some("query".to_owned()), None, HasArg::NoArgument, "query the table.").unwrap(),
    ];

    usage("ex2", "this is ex2 example.", env!("CARGO_PKG_VERSION"), longopts);
    match getopt_long(longopts) {
        Ok(p) => println!("Arguments:\n{}", p),
        Err(e) => println!("{}", e),
    }
    
    Ok(())
}