如何在Rust不同文件中调用公共函数?
Rust 跨文件模块调用的正确实现方式
首先明确核心规则:Rust的模块系统里,只有crate根文件(二进制项目是main.rs,库项目是lib.rs)可以用mod关键字声明同级文件为模块,其他子模块文件不能用mod来引入同级模块,而是要通过crate::路径来引用已经在根里声明过的模块。
你的实现思路是对的,完整的正确步骤如下:
在根文件
main.rs中声明所有模块
打开src/main.rs,在顶部添加这几行,告诉Rust这些文件属于当前crate的模块:mod concat_strings; mod time_request; mod start_listen;暴露
concat_strings.rs中的公共函数
在src/concat_strings.rs里,给需要被外部调用的函数加上pub关键字,让它变成公共接口:// 示例公共函数 pub fn combine(a: &str, b: &str) -> String { format!("{}{}", a, b) }在
start_listen.rs中调用公共函数
有两种常用方式:- 方式一:先导入模块,再调用函数
// 导入concat_strings模块 use crate::concat_strings; pub fn start() { // 调用模块里的公共函数 let result = concat_strings::combine("Hello", " Rust"); println!("{}", result); } - 方式二:直接使用完整路径调用,无需导入
pub fn start() { let result = crate::concat_strings::combine("Hello", " Rust"); println!("{}", result); }
- 方式一:先导入模块,再调用函数
额外说明
- 如果你后续要把项目改成库项目(用
cargo new --lib创建),逻辑完全一致,只是根文件换成lib.rs,同样在lib.rs里用mod声明所有模块,子模块之间用crate::引用。 - 模块名必须和文件名完全一致(大小写也要匹配),Rust会自动关联
mod xxx;和xxx.rs文件。
内容的提问来源于stack exchange,提问作者userh897
相关产品推荐
相关产品推荐

