Skip to content

Commit 1321630

Browse files
committed
imp(src/args): Exposes argument display order by introducing a new Trait
This commit introduces a new trait (`DispOrder`) with a single function (`fn disp_order(&self) -> usize`). It is use to expose the display order of an argument in a read-only manner.
1 parent d9372d0 commit 1321630

File tree

5 files changed

+20
-4
lines changed

5 files changed

+20
-4
lines changed

src/args/any_arg.rs

+4
Original file line numberDiff line numberDiff line change
@@ -26,3 +26,7 @@ pub trait AnyArg<'n, 'e> {
2626
fn help(&self) -> Option<&'e str>;
2727
fn default_val(&self) -> Option<&'n str>;
2828
}
29+
30+
pub trait DispOrder {
31+
fn disp_ord(&self) -> usize;
32+
}

src/args/arg_builder/flag.rs

+5-1
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ use std::result::Result as StdResult;
88
use vec_map::VecMap;
99

1010
use Arg;
11-
use args::{AnyArg, HelpWriter};
11+
use args::{AnyArg, HelpWriter, DispOrder};
1212
use args::settings::{ArgFlags, ArgSettings};
1313

1414
#[derive(Debug)]
@@ -131,6 +131,10 @@ impl<'n, 'e> AnyArg<'n, 'e> for FlagBuilder<'n, 'e> {
131131
fn default_val(&self) -> Option<&'n str> { None }
132132
}
133133

134+
impl<'n, 'e> DispOrder for FlagBuilder<'n, 'e> {
135+
fn disp_ord(&self) -> usize { self.disp_ord }
136+
}
137+
134138
#[cfg(test)]
135139
mod test {
136140
use super::FlagBuilder;

src/args/arg_builder/option.rs

+5-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ use std::io;
55

66
use vec_map::VecMap;
77

8-
use args::{AnyArg, Arg, HelpWriter};
8+
use args::{AnyArg, Arg, HelpWriter, DispOrder};
99
use args::settings::{ArgFlags, ArgSettings};
1010

1111
#[allow(missing_debug_implementations)]
@@ -195,6 +195,10 @@ impl<'n, 'e> AnyArg<'n, 'e> for OptBuilder<'n, 'e> {
195195
fn default_val(&self) -> Option<&'n str> { self.default_val }
196196
}
197197

198+
impl<'n, 'e> DispOrder for OptBuilder<'n, 'e> {
199+
fn disp_ord(&self) -> usize { self.disp_ord }
200+
}
201+
198202
#[cfg(test)]
199203
mod test {
200204
use super::OptBuilder;

src/args/arg_builder/positional.rs

+5-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ use std::io;
66
use vec_map::VecMap;
77

88
use Arg;
9-
use args::{AnyArg, HelpWriter};
9+
use args::{AnyArg, HelpWriter, DispOrder};
1010
use args::settings::{ArgFlags, ArgSettings};
1111

1212
#[allow(missing_debug_implementations)]
@@ -182,6 +182,10 @@ impl<'n, 'e> AnyArg<'n, 'e> for PosBuilder<'n, 'e> {
182182
fn default_val(&self) -> Option<&'n str> { self.default_val }
183183
}
184184

185+
impl<'n, 'e> DispOrder for PosBuilder<'n, 'e> {
186+
fn disp_ord(&self) -> usize { self.disp_ord }
187+
}
188+
185189
#[cfg(test)]
186190
mod test {
187191
use super::PosBuilder;

src/args/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ pub use self::subcommand::SubCommand;
55
pub use self::arg_builder::{FlagBuilder, OptBuilder, PosBuilder};
66
pub use self::matched_arg::MatchedArg;
77
pub use self::group::ArgGroup;
8-
pub use self::any_arg::AnyArg;
8+
pub use self::any_arg::{AnyArg, DispOrder};
99
pub use self::settings::ArgSettings;
1010
pub use self::help_writer::HelpWriter;
1111

0 commit comments

Comments
 (0)