который разбит на 3 файла.
Структура модуля такая:
src
-- my_module
-- mod.rs
-- request.rs
-- server.rs
Вопрос, как мне импортировать модуль request в модуль server?
use request::Request; не работает
mod.rs выглядит так:
pub use request::Method;
pub use request::Request;
pub use status::Status;
pub use server::Server;
pub mod request;
pub mod status;
pub mod server;
use super::request;
Спасибо!!!
Попробуй написать use crate::my_module, и дальше то что тебе нужно
Оно начнет прямо из корня твоего крейта искать модуль
Тобишь есть два варианта. Какой обычно лучше использовать? Мешать super:: и crate:: как я предполагаю не принято
Лично я бы использовал с crate::, так как так просто более понятно откуда оно берет юзы
Принято. Зависит от того, какая логика файлов у тебя стабильнее. Если ты потом планируешь раздербанить реквест и сервер по другим папкам, то делай от crate, а если планируешь их вместе держать, но можешь потом переместить папку в которой они оба лежат в какое-то другое место, то лучше super. Если не планируешь их перемещать вообще, то бери просто что больше нравится.
спасибо большое за совет :)
super к родительскому модулю обращается, причём к ним можно подряд обращаться для доступа на уровень выше. С помощью crate указывается абсолютный путь. Логика указания ровно такая же, какая в файловой системе: как удобнее, так и делай. В случае выбора между crate/super на самом верху по умолчанию импортируется префикс crate, можно его.
У вас на проектах нету какого то единого соглашения об импортах? например что нужно только crate:: например. Или обычно всем пофиг?
Это никак не влияет на код или на лёгкость чтения кода, кроме каких-то дегенеративных кейсов вроде use super::super::super::super::Foo; вместо use crate::Foo;
Обсуждают сегодня