rust - 编译时检查编译器是否nightly

标签 rust

<分区>

就是这样:我怎么知道项目是通过夜间编译器还是稳定编译器构建的?像这样:

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

最佳答案

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

关于rust - 编译时检查编译器是否nightly,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49247618/

相关文章:

linux - OSX 上的应用程序不能生成超过 2048 个线程

rust - 我怎样才能得到真正的核心数?

rust - 如何在可变引用结构中为字段交换新值?

rust - 为什么在专门化特征时会出现冲突的实现错误?

Rust RAM 限制 LRU 缓存?

将 brainf*ck 代码解析为 Rust 中的树

rust - 实现Iterator的代理方法,生命周期冲突

iterator - 我如何迭代 Rust 中返回 Futures 的函数的 Vec?

postgresql - 我无法捕获数据库引用

rust - 尝试使用 Box<_> 应用多态性时出现错误 "cannot move a value ... the size cannot be statically determined"