@@ -81,7 +81,7 @@ pub fn has_arg_flag(name: &str) -> bool {
81
81
82
82
/// Determines how many times a `--flag` is present.
83
83
pub fn num_arg_flag ( name : & str ) -> usize {
84
- std :: env:: args ( ) . take_while ( |val| val != "--" ) . filter ( |val| val == name) . count ( )
84
+ env:: args ( ) . take_while ( |val| val != "--" ) . filter ( |val| val == name) . count ( )
85
85
}
86
86
87
87
/// Yields all values of command line flag `name` as `Ok(arg)`, and all other arguments except
@@ -121,15 +121,15 @@ impl<I: Iterator<Item = String>> Iterator for ArgSplitFlagValue<'_, I> {
121
121
}
122
122
123
123
/// Yields all values of command line flag `name`.
124
- pub struct ArgFlagValueIter < ' a > ( ArgSplitFlagValue < ' a , env :: Args > ) ;
124
+ pub struct ArgFlagValueIter < ' a , I > ( ArgSplitFlagValue < ' a , I > ) ;
125
125
126
- impl < ' a > ArgFlagValueIter < ' a > {
127
- pub fn new ( name : & ' a str ) -> Self {
128
- Self ( ArgSplitFlagValue :: new ( env :: args ( ) , name) )
126
+ impl < ' a , I : Iterator < Item = String > > ArgFlagValueIter < ' a , I > {
127
+ pub fn new ( args : I , name : & ' a str ) -> Self {
128
+ Self ( ArgSplitFlagValue :: new ( args, name) )
129
129
}
130
130
}
131
131
132
- impl Iterator for ArgFlagValueIter < ' _ > {
132
+ impl < I : Iterator < Item = String > > Iterator for ArgFlagValueIter < ' _ , I > {
133
133
type Item = String ;
134
134
135
135
fn next ( & mut self ) -> Option < Self :: Item > {
@@ -141,9 +141,14 @@ impl Iterator for ArgFlagValueIter<'_> {
141
141
}
142
142
}
143
143
144
+ /// Gets the values of a `--flag`.
145
+ pub fn get_arg_flag_values < ' a > ( name : & ' a str ) -> impl Iterator < Item = String > + ' a {
146
+ ArgFlagValueIter :: new ( env:: args ( ) , name)
147
+ }
148
+
144
149
/// Gets the value of a `--flag`.
145
150
pub fn get_arg_flag_value ( name : & str ) -> Option < String > {
146
- ArgFlagValueIter :: new ( name) . next ( )
151
+ get_arg_flag_values ( name) . next ( )
147
152
}
148
153
149
154
/// Escapes `s` in a way that is suitable for using it as a string literal in TOML syntax.
@@ -296,7 +301,7 @@ fn cargo_extra_flags() -> Vec<String> {
296
301
297
302
// Forward `--config` flags.
298
303
let config_flag = "--config" ;
299
- for arg in ArgFlagValueIter :: new ( config_flag) {
304
+ for arg in get_arg_flag_values ( config_flag) {
300
305
flags. push ( config_flag. to_string ( ) ) ;
301
306
flags. push ( arg) ;
302
307
}
0 commit comments