#![feature(let_chains)]
pub fn ver_incr(ver: &str) -> String {
let mut iter = ver.char_indices().rev();
let mut end = None;
let mut start = None;
for (i, c) in &mut iter {
if c.is_ascii_digit() {
end = Some(i + 1);
start = Some(i);
break;
}
}
if end.is_some() {
for (i, c) in iter {
if c.is_ascii_digit() {
start = Some(i);
} else {
break;
}
}
}
if let Some(start) = start
&& let Some(end) = end
{
let num: u64 = ver[start..end].parse().unwrap();
let new_num = num + 1;
let new_ver = format!("{}{}{}", &ver[..start], new_num, &ver[end..]);
new_ver
} else {
format!("{}.0", ver)
}
}