1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
mod tests;

pub fn has_flag(flag: &str, args: Vec<String>) -> bool
{
    let prefix = if flag.starts_with("-") {
        ""
    } else {
        if flag.len() == 1 {
            "-"
        } else {
            "--"
        }
    };
    let args = &args;
    let position = args.into_iter().position(|x| x == &format!("{}{}", prefix, flag));
    let terminator_position = args.into_iter().position(|x| "--" == x);
    match position {
        Some(p) => match terminator_position {
            Some(tp) => p < tp,
            None => true,
        },
        _ => false,
    }
}