refactor(Defaults): derives traits instead of manual implementation

This commit is contained in:
Kevin K 2015-11-12 22:43:37 -05:00
parent e4182ad950
commit 3359683380
5 changed files with 16 additions and 76 deletions

View file

@ -40,6 +40,7 @@ use usageparser::{UsageParser, UsageToken};
/// Arg::from_usage("-i --input=[input] 'Provides an input file to the program'")
/// # ).get_matches();
#[allow(missing_debug_implementations)]
#[derive(Default)]
pub struct Arg<'n, 'l, 'h, 'g, 'p, 'r> {
/// The unique name of the argument
pub name: &'n str,
@ -98,34 +99,6 @@ pub struct Arg<'n, 'l, 'h, 'g, 'p, 'r> {
pub hidden: bool,
}
impl<'n, 'l, 'h, 'g, 'p, 'r> Default for Arg<'n, 'l, 'h, 'g, 'p, 'r> {
fn default() -> Self {
Arg {
name: "",
short: None,
long: None,
help: None,
required: false,
takes_value: false,
multiple: false,
index: None,
possible_vals: None,
blacklist: None,
requires: None,
num_vals: None,
min_vals: None,
max_vals: None,
val_names: None,
group: None,
global: false,
empty_vals: true,
validator: None,
overrides: None,
hidden: false,
}
}
}
impl<'n, 'l, 'h, 'g, 'p, 'r> Arg<'n, 'l, 'h, 'g, 'p, 'r> {
/// Creates a new instance of `Arg` using a unique string name.
/// The name will be used by the library consumer to get information about
@ -148,6 +121,7 @@ impl<'n, 'l, 'h, 'g, 'p, 'r> Arg<'n, 'l, 'h, 'g, 'p, 'r> {
pub fn with_name(n: &'n str) -> Self {
Arg {
name: n,
empty_vals: true,
..Default::default()
}
}
@ -379,6 +353,7 @@ impl<'n, 'l, 'h, 'g, 'p, 'r> Arg<'n, 'l, 'h, 'g, 'p, 'r> {
required: required,
takes_value: takes_value,
multiple: multiple,
empty_vals: true,
num_vals: if num_names > 1 {
Some(num_names)
} else {

View file

@ -9,7 +9,7 @@ use Arg;
use args::AnyArg;
use args::settings::{ArgFlags, ArgSettings};
#[derive(Debug)]
#[derive(Debug, Default)]
pub struct FlagBuilder<'n> {
pub name: &'n str,
/// The long version of the flag (i.e. word)
@ -38,13 +38,7 @@ impl<'n> FlagBuilder<'n> {
pub fn new(name: &'n str) -> Self {
FlagBuilder {
name: name,
short: None,
long: None,
help: None,
blacklist: None,
requires: None,
overrides: None,
settings: ArgFlags::new(),
..Default::default()
}
}
@ -114,10 +108,7 @@ impl<'n, 'a> From<&'a Arg<'n, 'n, 'n, 'n, 'n, 'n>> for FlagBuilder<'n> {
short: a.short,
long: a.long,
help: a.help,
blacklist: None,
requires: None,
overrides: None,
settings: ArgFlags::new(),
..Default::default()
};
if a.multiple {
fb.settings.set(&ArgSettings::Multiple);

View file

@ -10,6 +10,7 @@ use errors::{ClapResult, error_builder};
use app::App;
#[allow(missing_debug_implementations)]
#[derive(Default)]
pub struct OptBuilder<'n> {
pub name: &'n str,
/// The short version (i.e. single character) of the argument, no preceding `-`
@ -36,26 +37,6 @@ pub struct OptBuilder<'n> {
pub settings: ArgFlags,
}
impl<'n> Default for OptBuilder<'n> {
fn default() -> Self {
OptBuilder {
name: "",
short: None,
long: None,
help: None,
blacklist: None,
possible_vals: None,
requires: None,
num_vals: None,
min_vals: None,
max_vals: None,
val_names: None,
validator: None,
overrides: None,
settings: ArgFlags::new(),
}
}
}
impl<'n> OptBuilder<'n> {
pub fn new(name: &'n str) -> Self {
OptBuilder {

View file

@ -8,6 +8,7 @@ use args::AnyArg;
use args::settings::{ArgFlags, ArgSettings};
#[allow(missing_debug_implementations)]
#[derive(Default)]
pub struct PosBuilder<'n> {
pub name: &'n str,
/// The string of text that will displayed to the user when the application's
@ -36,16 +37,7 @@ impl<'n> PosBuilder<'n> {
PosBuilder {
name: name,
index: idx,
help: None,
blacklist: None,
possible_vals: None,
requires: None,
num_vals: None,
min_vals: None,
max_vals: None,
validator: None,
overrides: None,
settings: ArgFlags::new(),
..Default::default()
}
}
@ -75,16 +67,11 @@ impl<'n> PosBuilder<'n> {
let mut pb = PosBuilder {
name: a.name,
index: idx,
blacklist: None,
requires: None,
possible_vals: None,
num_vals: a.num_vals,
min_vals: a.min_vals,
max_vals: a.max_vals,
help: a.help,
validator: None,
overrides: None,
settings: ArgFlags::new(),
..Default::default()
};
if a.multiple {
pb.settings.set(&ArgSettings::Multiple);

View file

@ -50,6 +50,12 @@ impl ArgFlags {
}
}
impl Default for ArgFlags {
fn default() -> Self {
ArgFlags::new()
}
}
#[doc(hidden)]
#[derive(Debug, PartialEq)]
pub enum ArgSettings {