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}