gitnu 0.2.0

gitnu indexes your git status so you can use numbers instead of filenames.
Documentation
fn get_range(arg: &str) -> Option<(usize, usize)> {
    let (start, end) = arg.split_once("-")?;
    let int = |s: &str| s.parse().ok();
    let (s, e) = (int(start)?, int(end)?);
    Some(if s < e { (s, e) } else { (e, s) })
}

fn add_range(arg: &str, args: &mut Vec<String>) {
    let mut push_range = |(start, end): (usize, usize)| {
        for i in start..end + 1 {
            args.push(i.to_string());
        }
    };
    match get_range(&arg) {
        Some(v) => push_range(v),
        _ => args.push(arg.to_string()),
    }
}

pub fn load(args: Vec<String>) -> Vec<String> {
    let mut res = Vec::new();
    let mut it = args.iter();
    while let Some(arg) = it.next() {
        add_range(&arg, &mut res);
    }
    res
}