在Rust 2018中跨模块调用函数时出现“未解决的导入”

时间:2018-09-30 11:44:09

标签: rust

这是我的演示项目的文件树:

.
├── Cargo.lock
├── Cargo.toml
├── src
    ├── lib.rs
    ├── ooo.rs
    └── xxx.rs

lib.rs中:

mod xxx;
mod ooo;

xxx.rs中:

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

ooo.rs中:

use xxx::hello;

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

当我执行cargo build时,它不会成功:

   Compiling ooo v0.1.0 (/Users/eric/ooo)
error[E0432]: unresolved import `xxx`
 --> src/ooo.rs:1:5
  |
1 | use xxx::hello;
  |     ^^^ Could not find `xxx` in `{{root}}`

我知道,如果我使用super::ooo::hello而不是ooo::hello,它将成功,但是有什么方法可以使用ooo::hello并成功?

例如,这在redis-rs的{​​{1}}项目中有效,其中src/client.rsconnection是此板条箱中的模块:

types

1 个答案:

答案 0 :(得分:4)

您似乎正在使用Rust的2018版beta版而不是稳定版。在新版本中,您需要使用crate关键字显式标记从当前板条箱中的导入:

use crate::xxx::hello;

有关更多详细信息,请参见the section on "path clarity" in the edition guide