我在Rust中开始了一个新项目(这是我的第一个Rust项目,也是我接触的第一种编程语言)。我在
我已经阅读过:
如果我尝试直接从
如果我在
main.rs
中添加了一些函数、类型和单元测试。然后我想将它移动到两个新文件foo.rs
和bar.rs
中。
我该如何从foo.rs
导入/包含/使用bar.rs
?
我已经阅读过:
- https://doc.rust-lang.org/book/ch07-05-separating-modules-into-different-files.html(将模块分离到不同文件中)
- 如何在 Rust 2015 中从一个模块导入/包含基本函数?
- 将模块分解到几个文件中
- 如何从同一项目的另一个文件中包含模块?
- https://doc.rust-lang.org/stable/rust-by-example/mod.html(模块)
它们都没有以下结构
src/
|-- main.rs
|-- foo.rs
|-- bar.rs
这里是指 foo.rs
尝试使用 bar.rs
的内容。
如果我尝试直接从
foo.rs
使用在bar.rs
中声明的Bar
类型,我会得到以下错误信息:error[E0433]: failed to resolve: use of undeclared type or module `Bar`
--> src/foo.rs
如果我在
foo.rs
的开头添加mod bar
并不会更好:error[E0583]: file not found for module `bar`
--> src/foo.rs
|
1 | mod bar;
| ^^^
|
= help: name the file either foo/bar.rs or foo/bar/mod.rs inside the directory "src"
最后(但我并不指望这个会起作用),在foo.rs
中使用use bar;
:
error[E0432]: unresolved import `bar`
--> src/foo.rs
|
1 | use bar;
| ^^^ no `grammar` external crate
mod a;
。在任何其他模块中,你需要编写use a;
或use a::foo;
。你需要同时编写mod bar;
和use bar;
(实际上这里是crate::bar
)。 - trent