Expand description
§knife-util
一个高性能的 Rust 工具库,为 knife 项目提供核心功能支持。
§核心功能
- 🔄 JSON 深度合并: 支持类型转换和
_override_机制的高级 JSON 合并 - 🛠️ 统一错误处理: 结构化的错误类型,支持错误链和上下文信息
- 📁 智能路径管理: 自动检测工作目录,支持开发和生产环境
- ⚙️ TOML 双向转换: TOML 与 JSON 之间的无缝转换
§快速开始
§JSON 深度合并
use knife_util::{merge_json, AppError};
use serde_json::json;
fn main() -> Result<(), AppError> {
let config = json!({
"database": {"host": "localhost", "port": 5432},
"cache": {"enabled": true}
});
let override_config = json!({
"database.port._override_": 3306, // 使用 _override_ 强制覆盖
"cache": {"ttl": 3600} // 正常合并
});
let merged = merge_json(&config, &override_config)?;
println!("合并结果: {}", merged);
Ok(())
}§智能路径管理
use knife_util::{get_work_dir, build_work_path, is_dev_mode, AppError};
fn main() -> Result<(), AppError> {
// 自动检测工作目录
let work_dir = get_work_dir()?;
println!("工作目录: {:?}", work_dir);
// 构建项目路径
let config_path = build_work_path("config/app.toml")?;
println!("配置文件路径: {:?}", config_path);
// 环境检测
if is_dev_mode() {
println!("运行在开发模式");
}
Ok(())
}§TOML 转换工具
use knife_util::{toml_to_json, json_to_toml, AppError};
use serde_json::json;
fn main() -> Result<(), AppError> {
let toml_content = r#"
title = "My Application"
version = "1.0.0"
[database]
host = "localhost"
port = 5432
"#;
// TOML -> JSON
let json_value = toml_to_json(toml_content)?;
println!("JSON: {}", json_value);
// JSON -> TOML
let modified_json = json!({
"title": "Updated App",
"version": "2.0.0",
"database": {"host": "prod-server", "port": 3306}
});
let toml_result = json_to_toml(&modified_json)?;
println!("TOML: {}", toml_result);
Ok(())
}Re-exports§
pub use error::AppError;pub use merge::merge_json;pub use merge::MergePolicy;pub use merge::MergeWithTrait;pub use enums::EnumTypeTrait;pub use path::build_work_path;pub use path::get_work_dir;pub use path::is_dev_mode;pub use toml::json_to_toml;pub use toml::toml_file_to_json;pub use toml::toml_to_json;