fn split_git_version()

in rd-util/src/lib.rs [108:134]


fn split_git_version(ver: &str) -> (&str, &str) {
    let comps = ver.split('-').collect::<Vec<&str>>();
    let mut git_len = 0;
    let mut discard_len = 0;
    let mut idx = comps.len() - 1;

    if idx > 0 && comps[idx] == "dirty" {
        git_len += comps[idx].len() + 1;
        idx -= 1;
    }
    if idx > 0 && &comps[idx][0..1] == "g" && u64::from_str_radix(&comps[idx][1..], 16).is_ok() {
        git_len += comps[idx].len() + 1;
        idx -= 1;
        if idx > 0 && comps[idx].parse::<u32>().is_ok() {
            discard_len = comps[idx].len() + 1;
        }
    }

    if git_len == 0 {
        (ver, "")
    } else {
        (
            &ver[0..ver.len() - discard_len - git_len],
            &ver[ver.len() - git_len + 1..],
        )
    }
}