如何给模块取一个不同于 crate 的名字

How to give a modules a different name than a crate

我有一个相当大的库,我想将其分成多个较小的 crate,但我仍想保留相同的模块名称。

假设我有一个名为 xyz 的库,我想将它分成以下 crate:

我怎样才能使模块像这样仍然可用:

而不是把它变成这样:

我还希望能够在 crate 中使用 xyz::* 语法引用 crate 内容。所以 xyz-graphics 可以引用 xyz-core 使用 xyz::core::* 等等

创建一个主 crate xyz 将它们作为依赖项,re-export 其内的子 crate 中的所有项目:

pub mod core {
    #[doc(inline)]
    pub use xyz_core::*;
}
pub mod graphics {
    #[doc(inline)]
    pub use xyz_graphics::*;
}
pub mod audio {
    #[doc(inline)]
    pub use xyz_audio::*;
}
pub mod input {
    #[doc(inline)]
    pub use xyz_input::*;
}