Укажите версию rustc, необходимую для грузового проекта

#rust #toolchain

Вопрос:

Можно ли указать, что для грузового проекта требуется минимальная версия rustc, например, 1.1.0 для компиляции?

Ответ №1:

Вы можете использовать сценарий сборки, подобный этому

 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!(amp;mut io::stderr(), "This crate requires rustc >= 1.1.0.").unwrap();
        exit(1);
    }   
}
 

При этом используется ящик rustc_version.

Комментарии:

1. rustc_version 0.2 использование if version().unwrap() >= Version::parse("1.4.0").unwrap() { println!("cargo:rustc-cfg=compiler_has_important_bugfix"); }

Ответ №2:

Если для компиляции вашего проекта требуется минимальная версия rustc 1.1.0, вы можете просто создать файл с именем rust-toolchain (без расширения файла) в том же каталоге, что и файл Cargo.toml, и добавить в него следующее содержимое:

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

Затем, когда вы запустите cargo build его, он автоматически загрузит и установит эту версию и переключится на нее. Смотрите этот пост в блоге Rust для получения более подробной информации.

Этот Rust RFC #2495 предлагает альтернативный подход в будущем, когда мы сможем просто добавить строку rust = "1.1.0" в файл Cargo.toml.

Комментарии:

1. зачем еще один файл ? это похоже на python с сотней методов meh, rfc должен был быть реализован уже давно.

Ответ №3:

Я нашел несколько старых предложений на 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, поскольку в настоящее время он слишком нестабилен для отслеживания.

Так что, похоже, пока нет никакого способа. Может быть, вам стоит поднять свое дело там.

Комментарии:

1. RFC 2495 был одобрен для указания минимальной версии Rust, но по состоянию на март 2021 года он остается невыполненным

Ответ №4:

Нет.

На данный момент единственное, что вы реально можете сделать, это отметить требуемую версию в документации и/или README для ящика.

Возможно, вы сможете настроить multirust использование правильного компилятора, но имейте в виду, что он работает только в средах UNIX-y.

Ответ №5:

Если вы используете Travis, вы можете настроить, какие версии Rust и какие каналы вы поддерживаете. Это обычный способ документировать это.