std/sys/args/
common.rs

1use crate::ffi::OsString;
2use crate::{fmt, vec};
3
4pub struct Args {
5    iter: vec::IntoIter<OsString>,
6}
7
8impl !Send for Args {}
9impl !Sync for Args {}
10
11impl Args {
12    pub(super) fn new(args: Vec<OsString>) -> Self {
13        Args { iter: args.into_iter() }
14    }
15}
16
17impl fmt::Debug for Args {
18    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
19        self.iter.as_slice().fmt(f)
20    }
21}
22
23impl Iterator for Args {
24    type Item = OsString;
25    fn next(&mut self) -> Option<OsString> {
26        self.iter.next()
27    }
28    fn size_hint(&self) -> (usize, Option<usize>) {
29        self.iter.size_hint()
30    }
31}
32
33impl ExactSizeIterator for Args {
34    fn len(&self) -> usize {
35        self.iter.len()
36    }
37}
38
39impl DoubleEndedIterator for Args {
40    fn next_back(&mut self) -> Option<OsString> {
41        self.iter.next_back()
42    }
43}