rustc_get_version/
lib.rs

1#![crate_type = "lib"]
2#![allow(
3    dead_code,
4    unused_variables,
5    unused_imports,
6    unused_results,
7    unused_must_use,
8    unused_macros
9)]
10
11/// rust compiler get version
12/// 
13/// 
14fn rustc_get_version() -> String {
15    let cmd_output = std::process::Command::new("rustc")
16        .arg("--version")
17        .output()
18        .expect("Unable to execute command");
19
20    let v = String::from_utf8(cmd_output.stdout).unwrap_or_else(|_| String::new());
21    let re = regex::Regex::new(
22        r"rustc (?P<version>\d+\.\d+\.\d+) \((?P<commit>[^ ]+) (?P<date>[^\)]+)\)\n?$",
23    )
24    .unwrap();
25    let captures = re.captures(&v).unwrap();
26
27    String::from(
28        captures
29            .name("version")
30            .map(|m| m.as_str())
31            .unwrap_or_else(|| "0.0.0"),
32    )
33}
34
35#[test]
36fn rustc_get_version_test() {
37    let v = rustc_get_version();
38
39    println!("{}", &v);
40
41    assert_ne!("0.0.0", &v)
42}