Expand description
knife-util 库
提供 knife 项目所需的通用工具和功能
§功能模块
- 错误处理: 统一的错误类型和处理机制
- JSON合并: 深度合并JSON数据,支持类型转换
- 路径工具: 自动检测工作目录和项目路径
- TOML工具: TOML与JSON之间的双向转换
§使用示例
§JSON合并
use knife_util::{AppError, merge_json};
use serde_json::json;
fn main() -> Result<(), AppError> {
let target = json!({"user": {"name": "Alice"}});
let source = json!({"user": {"email": "alice@example.com"}});
// 合并JSON数据
let merged = merge_json(&target, &source)?;
println!("合并结果: {}", serde_json::to_string_pretty(&merged).unwrap());
Ok(())
}§路径工具
use knife_util::{AppError, get_work_dir, is_dev_mode};
fn main() -> Result<(), AppError> {
// 获取工作目录
let work_dir = get_work_dir()?;
println!("工作目录: {:?}", work_dir);
// 检查是否为开发模式
if is_dev_mode() {
println!("当前在开发模式中");
} else {
println!("当前在生产模式中");
}
Ok(())
}§TOML工具
use knife_util::{AppError, toml_to_json, json_to_toml};
use serde_json::json;
fn main() -> Result<(), AppError> {
// TOML 到 JSON 转换
let toml_str = r#"
title = "Example"
[database]
host = "localhost"
port = 5432
"#;
let json_value = toml_to_json(toml_str)?;
println!("TOML -> JSON: {}", serde_json::to_string_pretty(&json_value).unwrap());
// JSON 到 TOML 转换
let json_data = json!({
"app": {"name": "MyApp", "version": "1.0.0"}
});
let toml_result = json_to_toml(&json_data)?;
println!("JSON -> TOML:\n{}", toml_result);
Ok(())
}Re-exports§
pub use error::AppError;pub use merge::MergeFromTrait;pub use merge::MergeJsonTrait;pub use merge::merge_json;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;