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
11fn 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}