You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何简单快速地将 Rust 程序拆分为多个独立文件?

Rust 多文件拆分最简实现方案

以下方案适用于绝大多数单包(package)的二进制/库项目,不需要修改配置文件,几步即可落地:

前置条件

你的项目是通过cargo new创建的标准项目,初始结构如下:

your_project/
├── Cargo.toml
└── src/
    └── main.rs  # 库项目则是lib.rs

拆分步骤

场景1:单文件模块拆分

假设你要把通用工具逻辑抽成单独的utils模块:

  1. 在src目录下新建utils.rs文件,把需要拆分的代码写入,对外暴露的项前加pub关键字:
// src/utils.rs
// 对外暴露的函数
pub fn calc_score(score_list: &[u32]) -> u32 {
    score_list.iter().sum()
}

// 对外暴露的结构体,字段需要外部访问也要加pub
pub struct Student {
    pub id: u64,
    pub name: String,
}
  1. 在main.rs(或lib.rs)顶部添加模块声明:mod utils;
  2. 直接调用模块内的公开项即可:
// src/main.rs
mod utils;

fn main() {
    let s = utils::Student {
        id: 1001,
        name: "Li Ming".to_string(),
    };
    let total = utils::calc_score(&[90, 85, 95]);
    println!("{} 的总分为 {}", s.name, total);
}

场景2:文件夹级模块拆分

如果单个模块的代码太多,还可以拆成文件夹形式的多级模块:

  1. 在src目录下新建utils文件夹,在文件夹内新建mod.rs文件,作为该模块的入口
  2. 把需要拆分的子模块写入utils文件夹内,比如新建string_helper.rs写入字符串处理逻辑
  3. 在utils/mod.rs中声明子模块,需要对外暴露就加pub:
// src/utils/mod.rs
pub mod string_helper;
mod math_helper; // 不对外暴露,仅模块内部使用
  1. main.rs中仍然只需要声明mod utils;,调用子模块项时加层级前缀即可:utils::string_helper::escape_str("xxx")

注意事项

  • 以上方案完全不需要修改Cargo.toml,也不需要理解复杂的多包、工作区概念,足够支撑代码量在10万行以内的绝大多数项目的拆分需求
  • 仅当你需要把代码抽成可独立发布、跨项目复用的库时,才需要用到多crate、workspace等进阶配置

内容的提问来源于stack exchange,提问作者Jon Watte

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 06:15:07