如何在 main.rs 以外的文件中使用模块

3
我在我的src文件夹中有3个文件:'main.rs','network.rs'和'nodes.rs'。我想在network.rs中使用我在nodes.rs中声明的函数。我似乎找不到方法来做到这一点。我在网上找到的都是访问main.rs中的函数的方法。

main.rs:

mod network;
mod nodes;

fn main() {
    network::run();
}

network.rs

pub fn run() {
    newnode();
}

nodes.rs

pub fn newnode() {
    println!("Test");
}
3个回答

2
要访问nodes模块,您需要返回到main.rs,然后进入子模块。您可以通过从crate的根目录(在此示例中为main.rs)开始使用crate关键字(因此是crate::nodes::newnode),或者因为main.rsnetwork的父模块,通过super访问它:super::nodes::newnode

1

如果您不想使用完整路径调用函数,则需要在适当的模块中使用use显式地引用它们。

network.rs的开头处:use super::nodes::newnode;


1
没人提到并且让我感到沮丧的是,如果你想在一个不是主要模块的模块中使用另一个模块,你必须将它包含在 main.rs 文件中。换句话说,如果你不在 main.rs 中包含一个模块,其他模块将无法访问它。希望这对一些人有所帮助。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接