mirror of
https://github.com/clap-rs/clap
synced 2025-03-04 15:27:16 +00:00
refactor(Defaults): derives traits instead of manual implementation
This commit is contained in:
parent
e4182ad950
commit
3359683380
5 changed files with 16 additions and 76 deletions
|
@ -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 {
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -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 {
|
||||
|
|
|
@ -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);
|
||||
|
|
|
@ -50,6 +50,12 @@ impl ArgFlags {
|
|||
}
|
||||
}
|
||||
|
||||
impl Default for ArgFlags {
|
||||
fn default() -> Self {
|
||||
ArgFlags::new()
|
||||
}
|
||||
}
|
||||
|
||||
#[doc(hidden)]
|
||||
#[derive(Debug, PartialEq)]
|
||||
pub enum ArgSettings {
|
||||
|
|
Loading…
Add table
Reference in a new issue