That is it: how do I know whether the project is building by nightly or stable compiler? Something like this:
#[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
You can do it with the rustc_version crate and a build.rs script:
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");
}
}
}
Then check it with #[cfg(feature = "RUSTC_IS_STABLE")]
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With