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

如何在子模块中定义Axum路由及扩展待办应用项目结构?

Rust待办应用扩展模块的结构建议

完全不用把所有路由都塞进同一个文件里,Rust的模块系统支持非常灵活的拆分方式,给你几个可行的方案:

1. 按功能拆分路由文件

在现有的in_memory目录下新增路由文件,按照待办事项的不同操作维度拆分,比如:

src/
├── in_memory
│   ├── mod.rs
│   ├── routes.rs
│   ├── routes_create.rs  # 处理待办创建逻辑的路由
│   ├── routes_list.rs    # 处理待办列表查询的路由
│   ├── routes_update.rs  # 处理待办状态更新的路由
│   ├── routes_delete.rs  # 处理待办删除的路由
│   └── state.rs
└── main.rs

之后在in_memory/mod.rs中引入这些子路由模块:

pub mod routes;
pub mod routes_create;
pub mod routes_list;
pub mod routes_update;
pub mod routes_delete;
pub mod state;

你可以选择在routes.rs里把各个子模块的路由统一整合,也可以直接在main.rs中分别挂载不同功能的路由。

2. 新增独立顶级功能模块

如果后续要扩展非内存版的实现(比如数据库持久化),或者新增用户认证等独立功能,可以直接在src目录下新增顶级模块:

src/
├── in_memory
│   ├── ...
├── database          # 数据库版待办模块
│   ├── mod.rs
│   ├── routes.rs
│   └── state.rs
├── auth              # 用户认证模块
│   ├── mod.rs
│   └── routes.rs
└── main.rs

在main.rs中通过mod database;或者use crate::database::*;的方式引入这些模块即可。

核心提示

  • 绝对不需要把所有路由集中在同一个文件,Rust的模块系统本身就是为了拆分代码、提升可维护性设计的。
  • 每个模块目录下的mod.rs是该模块的入口文件,用于声明子模块、导出公共接口。
  • 模块划分可以遵循功能、数据模型或者业务逻辑的维度,只要保证结构清晰、便于后续维护即可。

内容的提问来源于stack exchange,提问作者José Gulmanelli

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.05 09:32:49