【问题标题】:Specify the version of rustc required for a Cargo project指定 Cargo 项目所需的 rustc 版本
【发布时间】:2021-10-17 07:50:55
【问题描述】:

是否可以指定 Cargo 项目需要最低 rustc 版本,例如 1.1.0 才能编译?

【问题讨论】:

    标签: rust rust-cargo


    【解决方案1】:

    如果您的项目需要 1.1.0 的最低 rustc 版本来编译,您可以简单地在 Cargo.toml 所在的目录中创建一个名为 rust-toolchain 的文件(没有任何文件扩展名)文件,并在其中添加以下内容:

    [toolchain]
    channel = "1.1.0"
    components = ["rust-src"]
    

    然后当您运行cargo build 时,它会自动下载并安装该版本并切换到该版本。有关详细信息,请参阅此Rust Blog post。

    Rust RFC #2495 提出了一种替代方法,我们可以将rust = "1.1.0" 行添加到 Cargo.toml 文件中。

    【讨论】:

    • 为什么是另一个文件?这看起来像python有数百种方法meh,rfc早就应该完成了。
    【解决方案2】:

    你可以像这样使用build script

    extern crate rustc_version;
    
    use std::io::{self, Write};
    use std::process::exit;       
    use rustc_version::version_matches;   
    
    fn main() {
        if !version_matches(">= 1.1.0") {
            writeln!(&mut io::stderr(), "This crate requires rustc >= 1.1.0.").unwrap();
            exit(1);
        }   
    }
    

    这使用了rustc_version crate。

    【讨论】:

    • rustc_version 0.2 使用if version().unwrap() >= Version::parse("1.4.0").unwrap() { println!("cargo:rustc-cfg=compiler_has_important_bugfix"); }
    【解决方案3】:

    如果您使用 Travis,您可以配置您支持的 Rust 版本和渠道。这是记录它的常用方法。

    【讨论】:

      【解决方案4】:

      没有。

      到目前为止,您唯一可以实际做的就是记下文档中所需的版本和/或板条箱的 README。

      您可以配置 multirust 以使用正确的编译器,但请记住,它仅适用于 UNIX-y 环境。

      【讨论】:

        【解决方案5】:

        我在 Github 上找到了一些旧提案:

        https://github.com/rust-lang/cargo/issues/837
        https://github.com/rust-lang/cargo/issues/1044
        https://github.com/rust-lang/cargo/issues/1214

        他们被关闭了

        我认为目前这张票没有太多可操作的,我同意我们肯定会重新评估 1.0 后的版本,但目前我认为货运不会进入支持业务各种 Rust 版本,因为它目前太不稳定而无法跟踪。

        所以似乎还没有办法。也许你应该在那里提出你的案子。

        【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2022-11-24
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2021-12-16
        • 2015-06-03
        相关资源
        最近更新 更多