Как импортировать ящик как субмодуль?

Я хотел бы импортировать ящик в мою библиотеку, а затем использовать этот ящик, как если бы он был модулем в моей библиотеке. Если я сделаю это:

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::*;
}

Должен работать - не проверено, хотя.

Другие вопросы по тегам