diff options
| author | Sebastian Thiel <byronimo@gmail.com> | 2016-04-30 16:37:44 +0200 |
|---|---|---|
| committer | Sebastian Thiel <byronimo@gmail.com> | 2016-07-26 12:12:43 +0200 |
| commit | 1aa8dad854155221db7cec19b6105c673e4a871e (patch) | |
| tree | 5705dc9fad2932e1cd947030bc1da241051e701d /src/libstd/sys/unix/os.rs | |
| parent | 728eea7dc1973558c12b7018d904147c8224e879 (diff) | |
| download | rust-1aa8dad854155221db7cec19b6105c673e4a871e.tar.gz rust-1aa8dad854155221db7cec19b6105c673e4a871e.zip | |
DoubleEndedIterator for Args
The number of arguments given to a process is always known, which makes implementing DoubleEndedIterator possible. That way, the Iterator::rev() method becomes usable, among others. Signed-off-by: Sebastian Thiel <byronimo@gmail.com> Tidy for DoubleEndedIterator I chose to not create a new feature for it, even though technically, this makes me lie about the original availability of the implementation. Verify with @alexchrichton Setup feature flag for new std::env::Args iterators Add test for Args reverse iterator It's somewhat depending on the input of the test program, but made in such a way that should be somewhat flexible to changes to the way it is called. Deduplicate windows ArgsOS code for DEI DEI = DoubleEndedIterator Move env::args().rev() test to run-pass It must be controlling it's arguments for full isolation. Remove superfluous feature name Assert all arguments returned by env::args().rev() Let's be very sure it works as we expect, why take chances. Fix rval of os_string_from_ptr A trait cannot be returned, but only the corresponding object. Deref pointers to actually operate on the argument Put unsafe to correct location
Diffstat (limited to 'src/libstd/sys/unix/os.rs')
| -rw-r--r-- | src/libstd/sys/unix/os.rs | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/src/libstd/sys/unix/os.rs b/src/libstd/sys/unix/os.rs index 21ce6b19ceb..a8cb1ce49d2 100644 --- a/src/libstd/sys/unix/os.rs +++ b/src/libstd/sys/unix/os.rs @@ -308,6 +308,10 @@ impl ExactSizeIterator for Args { fn len(&self) -> usize { self.iter.len() } } +impl DoubleEndedIterator for Args { + fn next_back(&mut self) -> Option<OsString> { self.iter.next_back() } +} + /// Returns the command line arguments /// /// Returns a list of the command line arguments. |
