knife-util
一个为 knife 项目提供通用工具和功能的 Rust 库。
🚀 功能特性
📦 核心模块
- 🔧 错误处理: 统一的错误类型和处理机制,支持错误链和上下文信息
- 🔄 JSON合并: 深度合并JSON数据,支持类型转换和枚举处理
- 📁 路径工具: 自动检测工作目录和项目路径,支持开发/生产环境
- 📄 TOML工具: TOML与JSON之间的双向转换功能
✨ 主要特性
- 🛡️ 类型安全: 所有操作都是类型安全的,编译时检查
- 🔄 深度合并: 支持嵌套对象的递归合并
- 🎯 智能转换: 自动处理数字、布尔值、字符串之间的类型转换
- 📊 枚举支持: 支持自定义枚举类型的转换
- 🏗️ 环境感知: 自动识别开发和生产环境
- 📚 完整文档: 提供详细的API文档和使用示例
📦 安装
在 Cargo.toml 中添加依赖:
[]
= "0.1.0"
🚀 快速开始
JSON 合并
use ;
use json;
路径工具
use ;
TOML 转换
use ;
use json;
📚 API 文档
错误处理
AppError
统一的错误类型,支持错误链和上下文信息:
use AppError;
// 创建基本错误
let error = new;
// 添加上下文信息
let error = error.with_attribute;
// 从其他错误类型创建
let io_error = new;
let app_error = from_error;
JSON 合并
merge_json
深度合并两个JSON值:
use merge_json;
use json;
let target = json!;
let source = json!;
let merged = merge_json?;
// 结果: {"user": {"name": "Alice", "age": 30, "email": "alice@example.com"}, "settings": {"theme": "dark"}}
类型转换
支持基本类型之间的转换:
use try_type_conversion;
use json;
// 数字 ↔ 字符串
let result = try_type_conversion?;
assert_eq!;
// 布尔值 ↔ 字符串
let result = try_type_conversion?;
assert_eq!;
枚举转换
支持自定义枚举类型的转换:
use try_enum_conversion;
use json;
let result = ?;
assert_eq!;
路径工具
get_work_dir
自动检测工作目录:
use get_work_dir;
let work_dir = get_work_dir?;
// 开发环境: /path/to/project/workspace
// 生产环境: /path/to/executable/directory
is_dev_mode
检查是否为开发模式:
use is_dev_mode;
if is_dev_mode else
build_work_path
构建工作路径:
use build_work_path;
let config_path = build_work_path?;
// 结果: /path/to/workspace/config/app.toml
TOML 工具
toml_to_json
将TOML字符串转换为JSON:
use toml_to_json;
let toml_str = r#"
title = "Example"
[database]
host = "localhost"
port = 5432
"#;
let json_value = toml_to_json?;
json_to_toml
将JSON值转换为TOML字符串:
use json_to_toml;
use json;
let json_data = json!;
let toml_str = json_to_toml?;
toml_file_to_json
从文件读取TOML并转换为JSON:
use toml_file_to_json;
let json_value = toml_file_to_json?;
🛠️ 开发
构建
测试
文档
代码覆盖率
📋 依赖
serde- 序列化框架serde_json- JSON支持anyhow- 错误处理toml- TOML解析tracing-subscriber- 日志支持
🤝 贡献
欢迎贡献代码!请遵循以下步骤:
- Fork 项目
- 创建特性分支 (
git checkout -b feature/amazing-feature) - 提交更改 (
git commit -m 'Add some amazing feature') - 推送到分支 (
git push origin feature/amazing-feature) - 打开 Pull Request
📄 许可证
本项目采用 Apache 2.0 许可证 - 查看 LICENSE 文件了解详情。
🔗 相关链接
📊 项目状态
- ✅ 错误处理模块
- ✅ JSON合并功能
- ✅ 路径工具
- ✅ TOML转换
- ✅ 完整测试覆盖
- ✅ 文档完善
knife-util - 让 Rust 开发更简单! 🦀