如何从子模块“导出”内容?

bfo*_*ops 7 module rust

我想写一个mod.rs像这样的文件:

pub use foo::*;

mod foo;
pub mod bar;
Run Code Online (Sandbox Code Playgroud)

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

She*_*ter 5

这是您的问题的MCVE

pub mod sub {
    use foo::function;

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

fn main() {}
Run Code Online (Sandbox Code Playgroud)

正如Adrian 提到的self,解决方案是在语句中使用关键字use

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

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

fn main() {}
Run Code Online (Sandbox Code Playgroud)

发生什么了?Rust 编程语言描述了这个问题:

关于self?好吧,默认情况下,use 声明是绝对路径,从您的板条箱根开始。self使该路径相对于您在层次结构中的当前位置。

也就是说,意味着从 crate 的根部use foo使用。表示相对于当前模块使用。foouse self::foofoo