diff --git a/src/app.rs b/src/app.rs index ba43da5f0ad..7fb60b52907 100644 --- a/src/app.rs +++ b/src/app.rs @@ -828,8 +828,8 @@ impl<'a, 'v, 'ab, 'u, 'h, 'ar> App<'a, 'v, 'ab, 'u, 'h, 'ar>{ -> App<'a, 'v, 'ab, 'u, 'h, 'ar> { if subcmd.name == "help" { self.needs_subcmd_help = false; } { - while let Some(a) = self.global_args.pop() { - subcmd = subcmd.arg(a); + for a in self.global_args.iter() { + subcmd = subcmd.arg(a.into()); } } self.subcommands.insert(subcmd.name.clone(), subcmd); diff --git a/src/args/arg.rs b/src/args/arg.rs index a83bb823875..79ea98ebb0b 100644 --- a/src/args/arg.rs +++ b/src/args/arg.rs @@ -865,3 +865,28 @@ impl<'n, 'l, 'h, 'g, 'p, 'r> Arg<'n, 'l, 'h, 'g, 'p, 'r> { self } } + +impl<'n, 'l, 'h, 'g, 'p, 'r, 'z> From<&'z Arg<'n, 'l, 'h, 'g, 'p, 'r>> for Arg<'n, 'l, 'h, 'g, 'p, 'r> { + fn from(a: &'z Arg<'n, 'l, 'h, 'g, 'p, 'r>) -> Arg<'n, 'l, 'h, 'g, 'p, 'r> { + Arg { + name: a.name, + short: a.short, + long: a.long, + help: a.help, + required: a.required, + takes_value: a.takes_value, + multiple: a.multiple, + index: a.index, + possible_vals: a.possible_vals.clone(), + blacklist: a.blacklist.clone(), + requires: a.requires.clone(), + num_vals: a.num_vals, + min_vals: a.min_vals, + max_vals: a.max_vals, + val_names: a.val_names.clone(), + group: a.group, + global: a.global, + empty_vals: a.empty_vals + } + } +} \ No newline at end of file