Module “我该怎么做?”;“出口”;来自子模块的东西?

Module “我该怎么做?”;“出口”;来自子模块的东西?,module,rust,Module,Rust,我想写一个mod.rs文件,比如: pub use foo::*; mod foo; pub mod bar; 但是我得到了错误未解析导入foo。正确的方法是什么?以下是您的问题: pub mod sub { use foo::function; pub mod foo { pub fn function() {} } } fn main() {} 如前所述,解决方案是在use语句中使用关键字self: pub mod sub { use

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

pub use foo::*;

mod foo;
pub mod bar;
但是我得到了错误
未解析导入
foo
。正确的方法是什么?

以下是您的问题:

pub mod sub {
    use foo::function;

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

fn main() {}
如前所述,解决方案是在
use
语句中使用关键字
self

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

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

fn main() {}
那么,发生了什么事?描述问题:

自我
呢?默认情况下,use声明是绝对路径,从板条箱根开始
self
将该路径改为相对于层次结构中的当前位置


也就是说,
use foo
意味着从板条箱的根部使用
foo
use self::foo
意味着相对于当前模块使用
foo

可以将
foo.rs
内联到
mod.rs
,然后让所有其他模块(例如
bar
)引用
foo
的内容,方法是使用
super::[thing]
,但这似乎很笨拙,尤其是在导出多个模块的内容时。就像你写的那样。我将模块主体内联定义为空,因为您的示例没有。也许你需要改进你失败的例子以产生一个有效的?但要将它嵌入到另一个子模块中。