pflag

pflag is a port of the spf13's popular fork of the Go package by the same name.

Usage

```rust use pflag::{FlagSet, Slice}; use std::net::{IpAddr, Ipv4Addr};

let mut flags = FlagSet::new("name");

// Use higher level methods over addflag directly. flags.int8("num", 0, "a flag for a number"); flags.stringp("str", 's', String::from("default value"), "a flag for a String and has a shorthand"); flags.ipaddrslice( "addrs", Slice::from([IpAddr::V4(Ipv4Addr::new(0,0,0,0)), IpAddr::V4(Ipv4Addr::new(127,0,0,1))]), "a multi-valued flag", );

let args = "--num=1 -s world --addrs 192.168.1.1,192.168.0.1 --addrs=127.0.0.1 subcommand"; if let Err(err) = flags.parse(args.split(' ')) { panic!(err); }

// Retrieving value is very easy with the valueof method. asserteq!(flags.value_of::("num").unwrap(), 1); assert_eq!(flags.valueof::("str").unwrap(), "world"); asserteq!(flags.value_of::>("addrs").unwrap().len(), 3);

// Any non-flag args i.e. positional args can be retrieved by... let args = flags.args(); asserteq!(args.len(), 1); asserteq!(args[0], "subcommand"); ```