Crate knife_util

Crate knife_util 

Source
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;

Modules§

error
错误处理模块
merge
JSON合并功能模块 JSON合并模块
path
路径工具模块 路径工具模块
toml
TOML工具模块 TOML 工具模块