Говоря об импорте, слово prelude используется так часто у рустеков.Что такое прелюдия?
Что это такое прелюдия О них говорят?
Как это влияет на мои программы Rust?
Говоря об импорте, слово prelude используется так часто у рустеков.Что такое прелюдия?
Что это такое прелюдия О них говорят?
Как это влияет на мои программы Rust?
В Русте, для того, чтобы использовать символ, вы должны либо:
use
директивы: use std::mem;
std::mem::replace
однако, некоторые очень немногие символы могут быть использованы без таких действий: Option
или Copy
например!
Это связано с Rust prelude.
Было признано, что ряд признаков, типов и функций был так часто использован, что имеет смысл не требовать, чтобы их использование требовало явного импорта необходимых символов каждый раз. Это достигается благодаря двух неявным действиям, предпринятых компилятор:
extern crate std;
use std::prelude::v1::*;
(пока)std::prelude::v1
является просто регулярным модулем, который реэкспортирует часто используемые символы с использованием синтаксиса pub use ...
. Его точное содержание можно найти here.
ряд других библиотек, или даже подкомпонентов стандартной библиотеки также определить prelude
модуль, который вы можете импортировать с тем же синтаксисом Глоб импорта: use xxx::prelude::*;
. В отличие от std::prelude
, однако они не имеют специальной оболочки компилятором и поэтому требуют явного импорта.
компилятор агностик к точному содержанию прелюдии, поэтому если один должен был заменить std
ящик со своими собственными (например, во вложенном развития), то можно было бы решить, что входит в их std::prelude::v1
модуль.
@ LukasKalbertodt: Хорошо, я начал писать ответ с помощью 'vec!', 'Panic!', ... но не смог найти, откуда они пришли. Я удалю его. –
[Этот RFC] (https://github.com/rust-lang/rfcs/pull/890) предлагает добавить функциональность прелюдии к ящикам пользователя. Некоторое время назад оно было закрыто, но может быть возрождено в будущем. –
@ MatthieuM. Спасибо за четкое объяснение. Кажется, что макрос 'println!' Не исходит из 'std :: prelude'? –