就是这样:我如何知道该项目是由夜间编译还是稳定编译器构建的?像这样:
#[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
答案 0 :(得分:4)
您可以使用rustc_version crate和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");
}
}
}
然后使用#[cfg(feature = "RUSTC_IS_STABLE")]
答案 1 :(得分:2)
我知道有两种选择。
1。
在Cargo.toml中使用此功能,并在您的代码中使用它,如下所示:#![cfg_attr(feature = "unstable", feature(nonzero, specialization))]
2。 使用build.rs文件并检查环境变量CFG_RELEASE_CHANNEL。请注意,我无法在官方Documentation中找到它,所以请事先尝试一下。