我正在使用rustc 1.0.0 (a59de37e9 2015-05-13) (built 2015-05-14),我有以下设置:
my_app/
|
|- my_lib/
| |
| |- foo
| | |- mod.rs
| | |- a.rs
| | |- b.rs
| |
| |- lib.rs
| |- Cargo.toml
|
|- src/
| |- main.rs
|
|- Cargo.toml
Run Code Online (Sandbox Code Playgroud)
SRC/main.rs:
extern crate my_lib;
fn main() {
my_lib::some_function();
}
Run Code Online (Sandbox Code Playgroud)
my_lib/lib.rs:
pub mod foo;
fn some_function() {
foo::do_something();
}
Run Code Online (Sandbox Code Playgroud)
my_lib /富/ mod.rs:
pub mod a;
pub mod b;
pub fn do_something() {
b::world();
}
Run Code Online (Sandbox Code Playgroud)
my_lib /富/ a.rs:
pub fn hello() {
println!("Hello world");
}
Run Code Online (Sandbox Code Playgroud)
my_lib /富/ b.rs:
use a;
pub fn world() {
a::hello();
}
Run Code Online (Sandbox Code Playgroud)
Cargo.toml:
[dependencies.my_lib]
path = "my_lib"
Run Code Online (Sandbox Code Playgroud)
当我尝试编译它时,我得到以下use语句抛出的错误B.rs:
unresolved import `A`. There is no `A` in `???`
Run Code Online (Sandbox Code Playgroud)
我错过了什么?谢谢.
问题是use路径是绝对的,而不是相对的.当你说use A;你实际说的是" A在这个箱子的根模块中使用符号"时,这将是lib.rs.
你需要使用的是use super::A;,那个或完整的路径:use foo::A;.
我写了一篇关于Rust的模块系统的文章,以及如果关于Crates and Modules的Rust Book章节没有,那么路径如何工作可能有助于清除它.
| 归档时间: |
|
| 查看次数: |
2104 次 |
| 最近记录: |