关于rust导入函数的问题,我的工程格式如下:
src/main.rs
src/api/api.rs
api.rs 里有一个函数:
pub async fn root() {}
问题是:我该如何在main.rs下调用这个root,我试过各种文档上的方法都不行。求助各位
知道怎么导入
关于rust导入函数的问题,我的工程格式如下:
src/main.rs
src/api/api.rs
api.rs 里有一个函数:
pub async fn root() {}
问题是:我该如何在main.rs下调用这个root,我试过各种文档上的方法都不行。求助各位
知道怎么导入
在 Rust 中,要从一个模块导入另一个模块中的函数,你需要遵循模块系统的导入规则。对于你提到的项目结构:
src/main.rs 是程序的入口点
src/api/api.rs 包含一个公开可见的异步函数 root
为了在 main.rs 中调用 api.rs 中的 root 函数,你需要做以下几步:
// api.rs
pub mod api; // 假设你已经有一个名为 api 的模块,否则去掉这个 mod 关键字
pub async fn root() {
// ...
}
// main.rs
use crate::api;
#[tokio::main]
async fn main() {
// 调用 api 模块中的 root 函数
api::root().await;
}
或者,如果你只想导入特定的 root 函数而不导入整个模块,可以这样做:
// main.rs
use crate::api::{root};
#[tokio::main]
async fn main() {
root().await;
}
另外,请确保你的项目结构允许编译器找到 api.rs 文件。通常,Cargo 编译项目时会自动处理子目录中的模块,但如果遇到问题,可以尝试在 main.rs 或 lib.rs(如果有的话)中显式声明模块路径:
// main.rs
mod api; // 这告诉 Rust 编译器在同一个目录下的 api.rs 文件中查找模块
// 然后按照上面的方法导入函数
最后,确保你的项目支持异步运行,比如使用了 tokio 运行时,并且在 Cargo.toml 文件中添加了必要的依赖。如果你还没有引入异步运行时,还需要在 main.rs 中引入相关的 crates 并设置异步入口点。
7 回答5.3k 阅读
1 回答3.3k 阅读
2 回答838 阅读
1 回答884 阅读
3种
1:
2:
3: