货物的多个Rust源文件

fad*_*bee 18 rust rust-cargo

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

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

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

Chr*_*gan 13

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

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


And*_*ner 6

很难从您分享的信息中说出您遇到了什么问题。以下是三个看似微不足道的事情,我仍然必须参考文档才能弄清楚:

首先,

    mod foo;
Run Code Online (Sandbox Code Playgroud)

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

其次,模块本身可以是公共的或私有的。如果您没有在相关函数和包含的模块上添加 pub 关键字,那可能会让您陷入困境。

    pub mod foo {pub fn bar();}
Run Code Online (Sandbox Code Playgroud)

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

请注意,在撰写本文时,Rust 仍处于 1.0 (0.12) 之前的版本,模块系统和文件路径的级别相对较高,因此,如果您在阅读本文时我所说的内容可能已经错误,请不要感到惊讶。