如何从子模块“导出”东西?

时间:2015-08-01 23:41:59

标签: module rust

我想写一个mod.rs文件,如:

pub use foo::*;

mod foo;
pub mod bar;

但我收到错误unresolved import foo。这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

以下是您问题的MCVE

pub mod sub {
    use foo::function;

    pub mod foo {
        pub fn function() {}
    }
}

fn main() {}

作为Adrian mentions,解决方案是在self语句中使用关键字use

pub mod sub {
    use self::foo::function;

    pub mod foo {
        pub fn function() {}
    }
}

fn main() {}

那么,发生了什么? The Rust Programming Language描述了问题:

  

self怎么样?嗯,默认情况下,使用声明是绝对路径,从您的包根开始。 self使该路径相对于层次结构中的当前位置。

也就是说,use foo表示从包的根目录中使用foouse self::foo表示相对于当前模块使用foo