17

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

4

6 回答 6

10

您可以使用这样的构建脚本

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板条箱。

于 2016-04-13T19:10:29.923 回答
8

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

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

然后,当您运行cargo build它时,它将自动下载并安装该版本并切换到它。有关更多详细信息,请参阅此Rust 博客文章

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

于 2021-03-11T00:38:42.637 回答
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 后版本,但目前我认为 cargo 不会进入支持各种 Rust 版本的业务因为它目前太不稳定而无法追踪。

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

于 2015-09-28T12:36:44.377 回答
3

在 Rust 1.56.0 中,您可以使用rust-version

rust-version 字段是一个可选键,它告诉 cargo 可以使用哪个版本的 Rust 语言和编译器编译你的包。如果当前选择的 Rust 编译器版本比规定的版本旧,cargo 将退出并出现错误,告诉用户需要什么版本。

[package]
rust-version = "1.56"
于 2022-02-14T13:27:09.557 回答
1

不。

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

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

于 2015-09-28T12:36:59.007 回答
-1

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

于 2015-09-28T21:10:54.663 回答