Как импортировать ящик как субмодуль?
Я хотел бы импортировать ящик в мою библиотеку, а затем использовать этот ящик, как если бы он был модулем в моей библиотеке. Если я сделаю это:
extern crate sdl2;
pub use sdl2;
Это дает мне ошибку, предлагая использовать sdl2::*
, но я не хочу перетаскивать все имена из ящика в мою библиотеку, я хочу, чтобы они были адресованы как субмодуль, например:
my_library::sdl2::init()
Я также попробовал это:
pub extern crate sdl2;
Это компилируется, но я понятия не имею, что он делает. Это, кажется, не делает ящик общедоступным из моей библиотеки.
2 ответа
Решение
Вы можете использовать переименование в use
а также extern crate
:
extern crate sdl2 as sdl2_;
pub use sdl2_ as sdl2;
Я лично нашел, как это сделать в stdx
ящик (который кажется устаревшим / заброшенным, хотя, по крайней мере, на данный момент).
Другой обходной путь:
extern crate sdl2;
mod sdl2 {
pub use ::sdl2::*;
}
Должен работать - не проверено, хотя.