Skip to content

Commit fb7d623

Browse files
kennytmkbknapp
authored andcommitted
impl Default for Values + OsValues for any lifetime.
1 parent 4030c55 commit fb7d623

File tree

1 file changed

+16
-2
lines changed

1 file changed

+16
-2
lines changed

src/args/arg_matches.rs

+16-2
Original file line numberDiff line numberDiff line change
@@ -568,7 +568,7 @@ impl<'a> DoubleEndedIterator for Values<'a> {
568568
impl<'a> ExactSizeIterator for Values<'a> {}
569569

570570
/// Creates an empty iterator.
571-
impl Default for Values<'static> {
571+
impl<'a> Default for Values<'a> {
572572
fn default() -> Self {
573573
static EMPTY: [OsString; 0] = [];
574574
// This is never called because the iterator is empty:
@@ -583,6 +583,13 @@ fn test_default_values() {
583583
assert_eq!(values.next(), None);
584584
}
585585

586+
#[test]
587+
fn test_default_values_with_shorter_lifetime() {
588+
let matches = ArgMatches::new();
589+
let mut values = matches.values_of("").unwrap_or_default();
590+
assert_eq!(values.next(), None);
591+
}
592+
586593
/// An iterator for getting multiple values out of an argument via the [`ArgMatches::values_of_os`]
587594
/// method. Usage of this iterator allows values which contain invalid UTF-8 code points unlike
588595
/// [`Values`].
@@ -622,7 +629,7 @@ impl<'a> DoubleEndedIterator for OsValues<'a> {
622629
}
623630

624631
/// Creates an empty iterator.
625-
impl Default for OsValues<'static> {
632+
impl<'a> Default for OsValues<'a> {
626633
fn default() -> Self {
627634
static EMPTY: [OsString; 0] = [];
628635
// This is never called because the iterator is empty:
@@ -636,3 +643,10 @@ fn test_default_osvalues() {
636643
let mut values: OsValues = OsValues::default();
637644
assert_eq!(values.next(), None);
638645
}
646+
647+
#[test]
648+
fn test_default_osvalues_with_shorter_lifetime() {
649+
let matches = ArgMatches::new();
650+
let mut values = matches.values_of_os("").unwrap_or_default();
651+
assert_eq!(values.next(), None);
652+
}

0 commit comments

Comments
 (0)