clamber-core 0.1.6

library for clamber
Documentation
# Clamber Core (Rust)


一个面向 Rust 项目的通用核心工具库,提供配置管理、JWT、分布式 ID(Snowflake)、结构化日志与错误处理等常用能力,开箱即用、类型安全、易扩展。

- 配置管理:多格式文件 + 环境变量覆盖 + 多文件合并(详见 CONFIG.md)
- JWT:简洁易用的 Token 生成与校验,支持自定义配置(详见 JWT_README.md)
- Snowflake:线程安全的分布式唯一 ID 生成(详见 SNOWFLAKE.md)
- 日志与追踪:tracing 生态,支持文件/控制台、按日滚动、环境过滤
- 错误处理:基于 thiserror 的统一错误类型 ClamberError(详见 ERROR_HANDLING_UPGRADE.md)

## 安装


在你的 Cargo.toml 中添加依赖:

```toml
[dependencies]
clamber-core = "0.1.3"
serde = { version = "1.0", features = ["derive"] }
```

最低 Rust 版本:与本库 edition 2024 兼容的稳定版 Rust(建议使用最新 stable)。

## 快速开始


下面展示各核心模块的最小可用示例。更多进阶用法请查看对应的模块文档。

### 1) 配置管理


- 从单个文件加载并支持环境变量覆盖:

```rust
use clamber_core::{load_config_with_env};
use serde::Deserialize;

#[derive(Debug, Deserialize)]

struct AppConfig { name: String, port: u16, debug: bool }

fn main() -> clamber_core::Result<()> {
    // 自动解析 YAML/TOML/JSON,支持环境变量前缀 APP_
    let config: AppConfig = load_config_with_env("config.yaml", "APP")?;
    println!("{:?}", config);
    Ok(())
}
```

- 构建器加载多个文件并设置默认值:

```rust
use clamber_core::ConfigBuilder;

let config: AppConfig = ConfigBuilder::new()
    .add_yaml_file("base.yaml")
    .add_yaml_file("production.yaml")
    .with_default("port", 8080)?
    .with_env_prefix("APP")
    .with_env_separator("__")
    .ignore_missing_files(true)
    .build()?;
```

更多内容请见 CONFIG.md(格式、环境变量命名规则、自动发现等)。

### 2) JWT


- 便利函数:

```rust
use clamber_core::token::{generate_token, verify_token, is_valid_token, JwtConfig};
use serde::{Serialize, Deserialize};

#[derive(Serialize, Deserialize, Debug, PartialEq)]

struct User { id: String, username: String, role: String }

fn main() -> clamber_core::Result<()> {
    let user = User { id: "1".into(), username: "alice".into(), role: "admin".into() };
    let token = generate_token(&user, JwtConfig::default())?;
    assert!(is_valid_token(&token));
    let decoded: User = verify_token(&token)?;
    assert_eq!(user, decoded);
    Ok(())
}
```

- 自定义配置:

```rust
use clamber_core::token::{JwtConfig, JwtManager};
let manager = JwtManager::new(JwtConfig::new("my_secret", 30));
```

更多内容请见 JWT_README.md(配置说明、API、错误示例等),以及 examples/jwt_usage.rs。

### 3) Snowflake 分布式 ID


```rust
use clamber_core::snowflake_utils;

let id = snowflake_utils::generate_id()?;
let string_id = snowflake_utils::generate_string_id()?;
let info = snowflake_utils::parse_id(id)?;
```

更多内容请见 SNOWFLAKE.md(ID 结构、配置、纪元自定义等),以及 examples/snowflake_example.rs。

### 4) 日志与追踪(tracing)


库内提供基于 tracing 的日志初始化与文件滚动方案,支持:
- 控制台与文件输出
- 按天滚动与压缩
- 环境变量过滤(RUST_LOG)

典型做法:

```rust
// 伪代码示例,实际 API 以 src/tracing_logs 为准
let (_guard_stdout, _guard_file) = clamber_core::tracing_logs::logger_start("logs")?;
tracing::info!("service started");
```

### 5) 统一错误处理


- 公开类型:
  - Result<T> = std::result::Result<T, ClamberError>
  - ClamberError:覆盖 JWT、IO、配置、日志等常见错误

示例与迁移说明见 ERROR_HANDLING_UPGRADE.md。

## 运行示例


项目内包含多份可运行示例,使用 Cargo 运行:

```bash
# JWT 示例

cargo run --example jwt_usage

# 错误处理示例

cargo run --example error_handling

# 自定义日志示例

cargo run --example beautiful_logs_custom

# Snowflake 示例

cargo run --example snowflake_example
```

在 Windows PowerShell 下亦可同样执行以上命令。

## 目录结构(节选)


- src/config 配置模块实现
- src/token JWT 模块实现
- src/snowflake 雪花算法模块实现
- src/tracing_logs 日志与追踪初始化
- examples 示例程序
- CONFIG.md、JWT_README.md、SNOWFLAKE.md、ERROR_HANDLING_UPGRADE.md 详细文档

## 版本与许可证


- crate: clamber-core = 0.1.3
- 许可证:MIT OR Apache-2.0
- 仓库:https://github.com/Clamber-L/clamber-core-rust

如有问题或建议,欢迎提交 Issue/PR。