【发布时间】:2022-01-19 00:16:02
【问题描述】:
我有一个包含三个文件的项目:
- 模块文件 (
src/foo.rs) - 库文件 (
src/lib.rs) - 二进制文件 (
src/main.rs)
我想在模块文件中拥有公共函数,其可见性仅限于库和二进制文件。
我曾尝试使用pub(crate)、pub(super) 等,但无济于事。
我想以这样的方式设计项目结构:
- 在将
lib.rs中的pub函数用作依赖包时,只能从外部调用它。 -
foo.rs中的所有函数都应该只对lib.rs和main.rs可见。 -
main.rs中的所有函数都应该是私有的。
EDIT1:我想要它,因为pub(crate) 会警告我死代码,而pub 不会。我不希望模块中有任何死代码。在大型项目的维护中,对调试和重构有很大帮助。
EDIT2:Rust Internals Thread
【问题讨论】:
-
main.rs是否依赖lib.rs作为依赖项,您是否希望main.rs通过lib.rs访问foo.rs? -
@kmdreko 那同样的事情没有?
-
你的问题没有任何意义,xy 问题?我建议你忘记这个想法。至少你应该解释为什么你想要那个。
-
只有 lib.rs 中的 pub 函数——这就是 Rust 的自然工作方式;没有什么特别的需要。 main.rs 中的所有函数——它们是否是私有的并不重要,因为你一开始就不能将二进制文件用作依赖项。 foo.rs 中的所有函数 — 是什么让 your main.rs 与任何其他可能使用该库的 crate 不同? Rust 中没有任何东西有你信任的“朋友”箱子的概念。
-
@Stargatuer 我主要是在问
lib.rs和main.rs是否都分别声明foo模块。
标签: rust rust-cargo