簡體   English   中英

指定 Cargo 項目所需的 rustc 版本

[英]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 版本的業務因為它目前太不穩定而無法跟蹤。

所以目前似乎還沒有辦法。 也許你應該在那里提出你的案子。

不。

到目前為止,您唯一能做的就是在文檔和/或包的README文件中注明所需的版本。

您可以配置multirust以使用正確的編譯器,但請記住,它僅適用於 UNIX-y 環境。

如果你使用 Travis,你可以配置你支持哪些 Rust 版本和通道。 這是記錄它的常用方法。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM