Почему actix_rt может использоваться непосредственно в коде, даже если он не был объявлен? - PullRequest
0 голосов
/ 13 октября 2019

Я только что добавил actix_rt в Cargo.toml и не объявил его в первой строке с ключевым словом use. Тогда я мог бы использовать это в коде. Я знаю, что некоторые часто используемые функции включены в прелюдию Rust, но я понятия не имел, что сторонние библиотеки могли бы что-то сделать. Могу ли я создать такой ящик?

Кто-нибудь может сказать мне, почему, или дать мне несколько советов или ссылки? Я был бы благодарен за это.

[dependencies]
actix-rt = "0.2.5"
actix-web = "1.0.8"
use std::io;

fn main() -> io::Result<()> {
    let sys = actix_rt::System::new("basic");

    sys.run()
}

1 Ответ

0 голосов
/ 13 октября 2019

В выпуске Rust 2018 extern crate больше не требуется . Размещение ящика в качестве зависимости позволяет получить к нему доступ как к модулю. Ничего не нужно делать, чтобы сделать ваш ящик таким доступным.

Это очень отличается от стандартной библиотеки прелюдии, которая use неявно подразумевает все элементы в прелюдии use std::prelude::v1::*;). С extern crate или добавлением внешнего ящика в качестве зависимости, типы, функции и признаки должны быть квалифицированы. В вашем примере вы должны использовать actix_rt::System::new("basic"), а не просто System::new("basic"). Сравните это с std::prelude::v1::Option, который можно использовать как Option<T> без префикса.

...