Конечно. Например, nt_version crate , который вы можете использовать для обнаружения windows версии во время компиляции . Обратите внимание, что вы можете «кросс-компилировать» для другой windows версии (например, разработать на Windows 7 для Windows 10 или аналогичной).
Вот небольшой фрагмент о том, как вы можете его использовать :
use nt_version;
fn main() {
let version: &str;
match nt_version::get() {
(6, 0, _) => version = "Windows Vista",
(6, 1, _) => version = "Windows 7",
(10, _, _) => version = "Windows 10",
_ => version = "Unsupported!",
}
println!("cargo:warning={}", version);
}