指定Cargo项目所需的rustc版本

时间:2015-09-28 11:34:15

标签: rust rust-cargo

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

5 个答案:

答案 0 :(得分:6)

您可以使用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包。

答案 1 :(得分:4)

我在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版本,因为它现在太不稳定而无法跟踪。

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

答案 2 :(得分:3)

如果您的项目需要最低 rustc 版本 1.1.0 来编译,您可以简单地在与 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 文件中。

答案 3 :(得分:2)

没有

截至目前,您唯一能够切实做到的就是记录文档中的所需版本和/或包装箱的README

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

答案 4 :(得分:0)

如果您使用Travis,则可以配置Rust的哪个版本以及您支持的通道。这是记录它的常用方法。