【问题标题】:Can I split crate in multiple files without introducing modules for each file?我可以在不为每个文件引入模块的情况下将 crate 拆分为多个文件吗?
【发布时间】:2014-06-05 22:01:35
【问题描述】:

我找到的所有示例都创建了一个lib.rs,然后在该文件中为每个文件创建mod foo;mod bar; foo.rsbar.rs 等等。

基本上,我想要将我的 crate 拆分为多个文件,但不必为每个文件引入大量模块。这对 Rust 来说是不可能的吗?

【问题讨论】:

  • 你可以有单独的子模块,你pub use它们在你想导出的模块中

标签: module namespaces rust rust-crates


【解决方案1】:

为了包含另一个源文件,它必须是它自己的模块。

但是,这并不意味着您必须在您的 API 中公开这一事实。例如,假设您想将一些代码放在一个名为 hidden.rs 的文件中:

pub fn inside_hidden() {}

现在在您的 lib.rs 文件中,您可以公开此模块:

#![crate_type = "lib"]

pub mod hidden;

但如果您的库不需要子模块,最好将 hidden 模块保密,并将其内容作为顶级模块的成员公开:

#![crate_type = "lib"]

pub use hidden::inside_hidden;

mod hidden;

这样,用户不会知道您有一个hidden 子模块。他们会看到inside_hidden,就好像它是您的顶级模块的成员一样。

【讨论】:

  • 一如既往的好答案 :) 谢谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2021-04-04
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-01-02
  • 2011-12-09
  • 1970-01-01
相关资源
最近更新 更多