Crate knife_util

Crate knife_util 

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

Modules§

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