当两个子模块位于同一主模块

时间:2015-06-05 15:17:45

标签: module rust

我正在使用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

的src / main.rs:

extern crate my_lib;

fn main() {
  my_lib::some_function();
}

my_lib / lib.rs:

pub mod foo;

fn some_function() {
  foo::do_something();
}

my_lib /富/ mod.rs:

pub mod a;
pub mod b;

pub fn do_something() {
  b::world();
}

my_lib /富/ a.rs:

pub fn hello() {
  println!("Hello world");
}

my_lib /富/ b.rs:

use a;
pub fn world() {
  a::hello();
}

Cargo.toml:

[dependencies.my_lib]
path = "my_lib"

当我尝试编译它时,我在use中的B.rs语句中抛出了以下错误:

unresolved import `A`. There is no `A` in `???`

我错过了什么?感谢。

1 个答案:

答案 0 :(得分:8)

问题是TextBox路径是绝对路径,而不是相对路径。当你说use你实际上说的是“在这个箱子的根模块中使用符号use A;”,这将是A

您需要使用的是lib.rs,或者完整路径:use super::A;

我写了一篇关于Rust's module system and how paths work的文章,如果Rust Book chapter on Crates and Modules没有,可能有助于澄清这一点。