/ src / version.rs
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";