dimensions/
dimensions.rs

1extern crate simon;
2
3use simon::*;
4
5#[derive(Debug, Clone)]
6enum Dimensions {
7    Fullscreen,
8    Window { width: u32, height: u32 },
9}
10
11impl Dimensions {
12    fn args() -> impl Arg<Item = Self> {
13        let window = args_depend! {
14            opt("", "width", "", ""),
15            opt("", "height", "", ""),
16        }
17        .option_map(|(width, height)| Dimensions::Window { width, height });
18        let fullscreen = flag("", "fullscreen", "").some_if(Dimensions::Fullscreen);
19        window.choice(fullscreen).required()
20    }
21}
22
23fn main() {
24    let dimensions = Dimensions::args().with_help_default().parse_env_or_exit();
25    println!("{:#?}", dimensions);
26}