[英]Specify the version of rustc required for a Cargo project
是否可以指定 Cargo 項目需要最低 rustc 版本,例如 1.1.0 才能編譯?
在 Rust 1.56.0 你可以使用rust-version
:
rust-version 字段是一個可選鍵,它告訴 cargo Rust 語言和編譯器的哪個版本可以編譯你的 package。 如果當前選擇的 Rust 編譯器版本比指定版本舊,cargo 將退出並報錯,告訴用戶需要什么版本。
[package]
rust-version = "1.56"
您可以使用這樣的構建腳本
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板條箱。
如果您的項目需要 rustc 最低 1.1.0 版本來編譯,您可以簡單地在 Cargo.toml 文件所在的目錄中創建一個名為rust-toolchain的文件(沒有任何文件擴展名),並在其中添加以下內容:
[toolchain]
channel = "1.1.0"
components = ["rust-src"]
然后當你運行cargo build
它會自動下載並安裝那個版本並切換到它。 有關更多詳細信息,請參閱此Rust 博客文章。
這個Rust RFC #2495提出了一種未來的替代方法,我們可以在 Cargo.toml 文件中添加rust = "1.1.0"
行。
我在 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 版本的業務因為它目前太不穩定而無法跟蹤。
所以目前似乎還沒有辦法。 也許你應該在那里提出你的案子。
如果你使用 Travis,你可以配置你支持哪些 Rust 版本和通道。 這是記錄它的常用方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.