[−][src]Crate pflag
pflag is a port of spf13s' amazing Go package by the same name.
pflag is compatible with the GNU extensions to the POSIX recommendations for command-line options. See http://www.gnu.org/software/libc/manual/html_node/Argument-Syntax.html.
use pflag::{FlagSet, Slice}; use std::net::{IpAddr, Ipv4Addr}; let mut flags = FlagSet::new("name"); // Use higher level methods over add_flag directly. flags.int8("num", 0, "a flag for a number"); flags.string_p("str", 's', String::from("default value"), "a flag for a String and has a shorthand"); flags.ip_addr_slice( "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 value_of method. assert_eq!(*flags.value_of::<i8>("num").unwrap(), 1); assert_eq!(*flags.value_of::<String>("str").unwrap(), "world"); assert_eq!(flags.value_of::<Slice<IpAddr>>("addrs").unwrap().len(), 3); // Any non-flag args i.e. positional args can be retrieved by... let args = flags.args(); assert_eq!(args.len(), 1); assert_eq!(args[0], "subcommand");
Modules
time | Temporal quantification. |
Structs
Flag | A Flag represents the state of a flag. |
FlagSet | A FlagSet represents a set of defined flags. |
Slice | Slice is used for creating multi-valued flags. |
UnknownFlag | UnknownFlag represents the lookup or invalid downcasting of an unknown flag. |
ValueError |
Traits
Value | Value is a trait representing the value stored in a flag. |