货物的多个Rust源文件

时间:2014-10-22 12:04:58

标签: rust rust-cargo

如果我在Cargo包的.rs目录中有多个src文件,那么可见性,导入等规则是什么?

目前,忽略任何额外的(即不是明确标识为Cargo.toml中可执行文件源的文件)文件。

我需要做些什么来解决这个问题?

2 个答案:

答案 0 :(得分:12)

以这种方式完全没有关于货物的特别之处。这是完全正常的Rust模块系统。如果Cargo将编译src/lib.rs,那或多或少等同于执行rustc --crate-type lib src/lib.rs(实际上有更多的命令行参数,但这是它的基础)。

其他文件随后与moduse等一起使用。文件不会自动导入或类似的东西。这部分尚未明确记录;一些简要说明如何实现事物的事情是http://rustbyexample.com/mod/split.htmlhttp://doc.rust-lang.org/reference.html#modules,但任何非平凡的代码库都会使用它们,因此您可以选择任何代码库来查看示例。

答案 1 :(得分:3)

很难说你从共享的信息中得到了什么。以下是三个看似微不足道的事情,我仍然需要参考文档来弄清楚:

首先,

    mod foo;

看起来像一个声明,但没有参数它实际上就像一个包含。因此,您使用相同的关键字来声明和包含模块,即没有使用:: keyword。

其次,模块本身可以是公共的或私有的。如果你没有在有问题的函数和包含模块上添加pub关键字,那可能会让你失望。

    pub mod foo {pub fn bar();}

第三,似乎在每个文件的顶部添加了一个隐式模块。这令人困惑;参考手册讨论了文件路径和名称之间的严格分离,以及代码中的模块路径,但这种抽象似乎在这里泄漏。

注意,在编写本文时,Rust仍然是1.0之前(0.12),在模块系统和文件路径是相对较高的级别,所以如果我说的话在你阅读的时候可能已经错了,不要感到惊讶此