Говоря об импорте, слово прелюдия используется так часто у рустеков.
Что это за прелюдия, о которой они говорят?
Как это влияет на мои программы Rust?
Говоря об импорте, слово прелюдия используется так часто у рустеков.
Что это за прелюдия, о которой они говорят?
Как это влияет на мои программы Rust?
В Rust, чтобы использовать символ, вы должны либо:
use
: use std::mem;
std::mem::replace
однако, некоторые такие символы могут использоваться без таких действий: Option
или Copy
например!
Это связано с предикатом ржавчины.
Было оценено так часто, как правило, несколько признаков, типов и функций, которые имели смысл не требовать, чтобы их использование требовало явного импорта необходимых символов каждый раз. Это достигается благодаря двум неявным действиям, предпринятым компилятором:
extern crate std;
use std::prelude::v1::*;
(пока) std::prelude::v1
является просто регулярным модулем, который реэкспортирует те часто используемые символы, используя синтаксис pub use ...
. Его точное содержание можно найти здесь.
Ряд других библиотек или даже подкомпонентов стандартной библиотеки также определяют модуль prelude
, который можно импортировать с тем же синтаксисом импорта glob: use xxx::prelude::*;
. В отличие от std::prelude
, однако эти компиляторы не имеют специальной оболочки и поэтому требуют явного импорта.
Компилятор не зависит от точного содержимого прелюдии, поэтому, если бы кто-то заменил ящик std
своими собственными (например, во встроенной разработке), тогда можно было бы решить, что входит в их модуль std::prelude::v1
.