就是这样:我如何知道该项目是通过夜间编译器还是稳定编译器构建的?像这样的东西:
#[cfg(nightly_build)]
use std::ptr::Shared; // on nightly use system's version
#[cfg(not(nightly_build))]
use myshared::Shared; // on stable use my unoptimized Shared
Run Code Online (Sandbox Code Playgroud)
您可以使用rustc_version箱和 build.rs 脚本来完成此操作:
extern crate rustc_version;
use rustc_version::{version_meta, Channel};
fn main() {
// Set cfg flags depending on release channel
match version_meta().unwrap().channel {
Channel::Stable => {
println!("cargo:rustc-cfg=RUSTC_IS_STABLE");
}
Channel::Beta => {
println!("cargo:rustc-cfg=RUSTC_IS_BETA");
}
Channel::Nightly => {
println!("cargo:rustc-cfg=RUSTC_IS_NIGHTLY");
}
Channel::Dev => {
println!("cargo:rustc-cfg=RUSTC_IS_DEV");
}
}
}
Run Code Online (Sandbox Code Playgroud)
#[cfg(feature = "RUSTC_IS_STABLE")]然后在 Rust 代码中使用 等进行检查。