Data Transfer
一个用于自动化处理工作中繁琐任务的命令行工具。
项目简介
Data Transfer 是一个基于 Rust 开发的命令行程序,旨在帮助快速处理工作中所需执行的重复性、繁琐任务。通过模块化设计和良好的错误处理机制,该工具提供了可靠且易于扩展的任务自动化解决方案。
特性
- 🚀 高性能: 基于 Rust 构建,执行速度快,内存安全
- 🔧 模块化设计: 清晰的代码结构,易于维护和扩展
- ⚡ 命令行友好: 使用 clap 提供完善的命令行参数解析
- 🛡️ 健壮的错误处理: 使用 anyhow 和 thiserror 进行显式错误管理
- 📝 详细的日志: 支持 verbose 模式查看详细运行信息
项目结构
data-transfer/
├── Cargo.toml # 项目配置和依赖管理
├── README.md # 项目文档
├── PROJECT_MILESTONES.md # 版本里程碑和依赖管理
└── src/
├── main.rs # 程序入口
├── cli.rs # 命令行参数定义
├── config.rs # 配置管理
├── error.rs # 错误类型定义
└── commands/ # 命令实现模块
├── mod.rs # 命令模块导出
└── example.rs # 示例命令实现
技术架构
核心模块
- cli: 使用 clap 的派生 API 定义命令行接口
- config: 管理应用程序配置和参数
- error: 自定义错误类型,提供清晰的错误上下文
- commands: 所有子命令的实现逻辑
设计原则
项目严格遵循以下 Rust 最佳实践:
- 高内聚、低耦合: 功能模块独立,接口清晰
- 显式错误处理: 使用
Result<T, E>处理可恢复错误 - 所有权管理: 合理使用借用和生命周期
- 并发安全: 使用标准库同步原语保证线程安全
- 测试驱动: 为核心逻辑提供单元测试
安装
前置要求
- Rust 1.70 或更高版本
- Cargo
从源码构建
# 克隆仓库
git clone <repository-url>
cd data-transfer
# 构建项目
cargo build --release
# 可执行文件位于 target/release/data-transfer
使用方法
基本命令
# 查看帮助信息
./data-transfer --help
# 启用详细日志模式
./data-transfer --verbose
# 运行示例命令
./data-transfer example --input "test data"
命令参数
-v, --verbose: 启用详细日志输出-h, --help: 显示帮助信息-V, --version: 显示版本信息
开发指南
添加新命令
- 在
src/commands/目录下创建新模块文件 - 在
src/cli.rs中的Commands枚举添加新命令变体 - 在
src/commands/mod.rs中导出新命令 - 在
src/main.rs中处理新命令的执行逻辑 - 为新命令编写单元测试
运行测试
# 运行所有测试
cargo test
# 运行特定测试
cargo test test_name
# 显示测试输出
cargo test -- --nocapture
代码规范
- 使用
snake_case命名函数、变量和模块 - 使用
UpperCamelCase命名类型(struct、enum、trait) - 所有公共 API 必须包含文档注释(
///) - 禁止在生产代码中使用
unwrap()或expect() - 优先使用不可变引用
&,仅在必要时使用&mut
错误处理规范
- 可恢复错误使用
Result<T, E>类型 - 使用
?操作符传播错误 - 自定义错误类型继承
thiserror::Error - 错误消息必须包含足够的上下文信息
依赖说明
核心依赖库:
- clap: 命令行参数解析库,提供强大的 CLI 构建能力
- anyhow: 简化错误处理和传播
- thiserror: 自定义错误类型的派生宏
详细依赖信息请参考 PROJECT_MILESTONES.md。
许可证
[待补充]
贡献指南
欢迎贡献代码和提交问题报告!请确保:
- 代码符合项目规范
- 添加必要的测试
- 更新相关文档
- 提交前运行
cargo fmt和cargo clippy
路线图
当前版本为 0.1.0,处于初始开发阶段。后续功能将根据实际需求逐步添加。
详细的版本规划和功能列表请查看 PROJECT_MILESTONES.md。
联系方式
[待补充]