version.rs
1 pub fn bump_version(version: &[u8], index: usize) -> Vec<u8> { 2 let mut version = version.to_vec(); 3 4 match index { 5 // major 6 0 => { 7 version[0] += 1; 8 version[1..].fill(0); 9 } 10 // minor 11 1 => { 12 version[1] += 1; 13 version[2..].fill(0); 14 } 15 // patch 16 2 => version[2] += 1, 17 _ => unreachable!(), 18 } 19 20 version 21 } 22 23 pub fn version_to_string(version: Vec<u8>) -> String { 24 version 25 .iter() 26 .map(|part| part.to_string()) 27 .collect::<Vec<String>>() 28 .join(".") 29 } 30 31 pub fn string_to_version(version: &str) -> Vec<u8> { 32 version 33 .split(".") 34 .map(|part| part.parse::<u8>().unwrap()) 35 .collect() 36 } 37 38 /// Whenever the project has no version so we default on this version. 39 pub const DEFAULT: &str = "0.0.0";