diff options
Diffstat (limited to 'src/args.rs')
| -rw-r--r-- | src/args.rs | 29 |
1 files changed, 14 insertions, 15 deletions
diff --git a/src/args.rs b/src/args.rs index 0014d66..9f6fe3d 100644 --- a/src/args.rs +++ b/src/args.rs @@ -1,7 +1,8 @@ +#![allow(dead_code)] + use derive_builder::Builder; use std::collections::HashMap; -#[allow(dead_code)] pub enum ValueRequirement { None, Required(&'static str), @@ -96,7 +97,7 @@ pub trait Parser { fn run( &self, options: &mut Options, - args: impl IntoIterator<Item = String>, + args: &mut dyn Iterator<Item = String>, ) -> Result<Arguments, String>; fn print_help(&self, options: &Options); } @@ -128,16 +129,15 @@ impl Parser for LongOnlyParser { fn run( &self, options: &mut Options, - args: impl IntoIterator<Item = String>, + args: &mut dyn Iterator<Item = String>, ) -> Result<Arguments, String> { let mut ret = Vec::new(); - let mut args_iter = args.into_iter(); - let program = args_iter.next(); - while let Some(arg) = args_iter.next() { + let program = args.next(); + while let Some(arg) = args.next() { if arg.starts_with("-") { if arg == "--" { // All following arguments are just that. - while let Some(arg) = args_iter.next() { + while let Some(arg) = args.next() { ret.push(arg) } break; @@ -162,7 +162,7 @@ impl Parser for LongOnlyParser { } ValueRequirement::Required(_) => { if value.is_none() { - value = args_iter.next(); + value = args.next(); if value.is_none() { return Err(format!("option '{}' requires an argument", arg)); } @@ -206,16 +206,15 @@ impl Parser for ShortAndLongParser { fn run( &self, options: &mut Options, - args: impl IntoIterator<Item = String>, + args: &mut dyn Iterator<Item = String>, ) -> Result<Arguments, String> { let mut ret = Vec::new(); - let mut args_iter = args.into_iter(); - let program = args_iter.next(); - while let Some(arg) = args_iter.next() { + let program = args.next(); + while let Some(arg) = args.next() { if arg.starts_with("--") { if arg.len() == 2 { // All following arguments are just that. - while let Some(arg) = args_iter.next() { + while let Some(arg) = args.next() { ret.push(arg) } break; @@ -240,7 +239,7 @@ impl Parser for ShortAndLongParser { } ValueRequirement::Required(_) => { if value.is_none() { - value = args_iter.next(); + value = args.next(); if value.is_none() { return Err(format!("option '{}' requires an argument", arg)); } @@ -260,7 +259,7 @@ impl Parser for ShortAndLongParser { match option.value_req { ValueRequirement::None => {} ValueRequirement::Required(_) => { - value = args_iter.next(); + value = args.next(); if value.is_none() { return Err(format!("option requires an argument -- '{}", c)); } |
