1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
use std::ffi::OsStr;
use std::process;
use crate::name::Name;
pub struct Arg {
name: Name,
arg: &'static OsStr,
}
impl Arg {
pub(crate) fn new(name: Name, arg: &'static OsStr) -> Self {
Arg { name, arg }
}
pub fn get_raw(self) -> &'static OsStr {
self.arg
}
pub fn get_str(self) -> &'static str {
let name = self.name;
match self.get_raw().to_str() {
Some(string) => string,
None => {
eprintln!("Non-unicode arg for {}", name);
process::exit(1);
}
}
}
}