如何将 crate 作为子模块导入?
How to import a crate as a sub module?
我想将一个 crate 导入到我的库中,然后将该 crate 当作我库中的一个模块来使用。如果我这样做:
extern crate sdl2;
pub use sdl2;
这给了我一个错误,建议我使用 sdl2::*
,但我不想将所有名称从板条箱拖到我的库中,我希望将它们作为子模块处理,例如:
my_library::sdl2::init()
我也试过这个:
pub extern crate sdl2;
可以编译,但我不知道它做了什么。不过,它似乎并没有使箱子可以从我的图书馆公开访问。
您可以在 use
和 extern crate
中使用重命名:
extern crate sdl2 as sdl2_;
pub use sdl2_ as sdl2;
我个人在 stdx
板条箱(看起来是 deprecated/abandoned,但至少目前是这样)中找到了如何做到这一点。
另一种解决方法:
extern crate sdl2;
mod sdl2 {
pub use ::sdl2::*;
}
应该可以工作 -- 虽然未经测试。
我想将一个 crate 导入到我的库中,然后将该 crate 当作我库中的一个模块来使用。如果我这样做:
extern crate sdl2;
pub use sdl2;
这给了我一个错误,建议我使用 sdl2::*
,但我不想将所有名称从板条箱拖到我的库中,我希望将它们作为子模块处理,例如:
my_library::sdl2::init()
我也试过这个:
pub extern crate sdl2;
可以编译,但我不知道它做了什么。不过,它似乎并没有使箱子可以从我的图书馆公开访问。
您可以在 use
和 extern crate
中使用重命名:
extern crate sdl2 as sdl2_;
pub use sdl2_ as sdl2;
我个人在 stdx
板条箱(看起来是 deprecated/abandoned,但至少目前是这样)中找到了如何做到这一点。
另一种解决方法:
extern crate sdl2;
mod sdl2 {
pub use ::sdl2::*;
}
应该可以工作 -- 虽然未经测试。