#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:
[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 и какие каналы вы поддерживаете. Это обычный способ документировать это.