rust 检查编译器是否每晚在编译时[关闭]

pn9klfpd  于 2023-04-12  发布在  其他
关注(0)|答案(2)|浏览(155)

已关闭,此问题需要更focused,目前不接受回答。
**要改进此问题吗?**更新问题,使其仅关注editing this post的一个问题。

5年前关闭。
Improve this question
就是这样:我如何知道项目是由夜间编译器还是稳定编译器构建的?类似于以下内容:

#[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
bvuwiixz

bvuwiixz1#

您可以使用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")]检查

dsekswqp

dsekswqp2#

我知道有两个选择。
1.在你的Cargo.toml中使用一个特性,并像这样在你的代码中使用它:#![cfg_attr(feature = "unstable", feature(nonzero, specialization))]
2.使用 build.rs文件并检查环境变量CFG_RELEASE_CHANNEL。注意,我在官方的Documentation中找不到它,所以请提前尝试一下。

相关问题