knife_util/lib.rs
1//! knife-util 库
2//!
3//! 提供 knife 项目所需的通用工具和功能
4//!
5//! # 功能模块
6//! - **错误处理**: 统一的错误类型和处理机制
7//! - **JSON合并**: 深度合并JSON数据,支持类型转换
8//! - **路径工具**: 自动检测工作目录和项目路径
9//! - **TOML工具**: TOML与JSON之间的双向转换
10//!
11//! # 使用示例
12//!
13//! ## JSON合并
14//! ```rust
15//! use knife_util::{AppError, merge_json};
16//! use serde_json::json;
17//!
18//! fn main() -> Result<(), AppError> {
19//! let target = json!({"user": {"name": "Alice"}});
20//! let source = json!({"user": {"email": "alice@example.com"}});
21//!
22//! // 合并JSON数据
23//! let merged = merge_json(&target, &source)?;
24//! println!("合并结果: {}", serde_json::to_string_pretty(&merged).unwrap());
25//! Ok(())
26//! }
27//! ```
28//!
29//! ## 路径工具
30//! ```rust
31//! use knife_util::{AppError, get_work_dir, is_dev_mode};
32//!
33//! fn main() -> Result<(), AppError> {
34//! // 获取工作目录
35//! let work_dir = get_work_dir()?;
36//! println!("工作目录: {:?}", work_dir);
37//!
38//! // 检查是否为开发模式
39//! if is_dev_mode() {
40//! println!("当前在开发模式中");
41//! } else {
42//! println!("当前在生产模式中");
43//! }
44//! Ok(())
45//! }
46//! ```
47//!
48//! ## TOML工具
49//! ```rust
50//! use knife_util::{AppError, toml_to_json, json_to_toml};
51//! use serde_json::json;
52//!
53//! fn main() -> Result<(), AppError> {
54//! // TOML 到 JSON 转换
55//! let toml_str = r#"
56//! title = "Example"
57//! [database]
58//! host = "localhost"
59//! port = 5432
60//! "#;
61//! let json_value = toml_to_json(toml_str)?;
62//! println!("TOML -> JSON: {}", serde_json::to_string_pretty(&json_value).unwrap());
63//!
64//! // JSON 到 TOML 转换
65//! let json_data = json!({
66//! "app": {"name": "MyApp", "version": "1.0.0"}
67//! });
68//! let toml_result = json_to_toml(&json_data)?;
69//! println!("JSON -> TOML:\n{}", toml_result);
70//! Ok(())
71//! }
72//! ```
73
74/// 错误处理模块
75pub mod error;
76
77/// JSON合并功能模块
78pub mod merge;
79
80/// 路径工具模块
81pub mod path;
82
83/// TOML工具模块
84pub mod toml;
85
86/// 错误类型
87pub use error::AppError;
88
89/// JSON合并功能
90pub use merge::{MergeFromTrait, MergeJsonTrait, merge_json};
91
92/// 路径工具
93pub use path::{build_work_path, get_work_dir, is_dev_mode};
94
95/// TOML工具
96pub use toml::{json_to_toml, toml_file_to_json, toml_to_json};