| Crates.io | mudssky_utils |
| lib.rs | mudssky_utils |
| version | 1.0.0 |
| created_at | 2025-07-20 16:44:18.893606+00 |
| updated_at | 2025-07-20 16:44:18.893606+00 |
| description | A comprehensive Rust utility library providing common functionality for everyday programming tasks |
| homepage | https://github.com/mudssky/mudssky_utils |
| repository | https://github.com/mudssky/mudssky_utils |
| max_upload_size | |
| id | 1761235 |
| size | 382,127 |
一个功能丰富的 Rust 实用工具库,提供字符串处理、数组操作、对象处理、数学计算、字节转换、异步工具、函数式编程、环境变量处理、日志记录和正则表达式等常用功能。
camel_case, snake_case, pascal_case, dash_casecapitalize, trim, remove_prefix, get_file_extfuzzy_match - 字符串相似度计算parse_template - 支持自定义正则模式的模板替换generate_uuid, generate_base62_code, generate_random_stringgenerate_merge_paths - 智能路径合并chunk - 将数组分割成指定大小的块flatten - 多维数组扁平化处理unique, intersection, difference, unioncompact - 移除空值和无效元素range - 灵活的数字范围生成器zip, unzip - 数组组合与分离sum, group_by - 数组统计和分组pick, omit - 选择或排除指定属性merge - 深度合并多个对象invert, map_keys, map_values - 键值转换和映射pick_by, omit_by - 基于条件的属性过滤safe_json_stringify, remove_non_serializable_propsrandom_int, random_int_max, random_rangeget_random_item_from_array - 从数组中随机选择元素parse_bytes - 解析 "1.5 GB" 等字符串格式format_bytes - 可自定义格式的字节显示sleep_async - 非阻塞延迟执行timeout - 为异步操作添加超时机制join_all - 并发执行多个异步任务Debouncer - 延迟执行,避免频繁调用Throttler - 限制函数执行频率Poller - 可配置的定时任务执行器with_retry - 自动重试失败的操作,支持自定义策略is_development, is_production, is_test - 环境判断is_debug - 调试模式检测thiserror 的类型安全错误处理在你的 Cargo.toml 中添加:
[dependencies]
mudssky_utils = "0.1.0"
tokio = { version = "1.46", features = ["full"] } # 异步功能需要
use mudssky_utils::string::*;
// 大小写转换
let camel = camel_case("hello_world"); // "helloWorld"
let snake = snake_case("HelloWorld"); // "hello_world"
let pascal = pascal_case("hello-world"); // "HelloWorld"
// 模糊匹配
let score = fuzzy_match("hello", "hllo"); // 0.8
// UUID 生成
let uuid = generate_uuid(); // "a1b2c3d4-e5f6-7890-abcd-ef1234567890"
use mudssky_utils::array::*;
// 数组分块
let chunks = chunk(&[1, 2, 3, 4, 5], 2); // [[1, 2], [3, 4], [5]]
// 数组去重
let unique_items = unique(&[1, 2, 2, 3, 3, 3]); // [1, 2, 3]
// 数组交集
let common = intersection(&[1, 2, 3], &[2, 3, 4]); // [2, 3]
use mudssky_utils::object::*;
use std::collections::HashMap;
let mut map = HashMap::new();
map.insert("name".to_string(), "Alice".to_string());
map.insert("age".to_string(), "30".to_string());
map.insert("city".to_string(), "NYC".to_string());
// 选择特定键
let picked = pick(&map, &["name", "age"]); // {"name": "Alice", "age": "30"}
// 排除特定键
let omitted = omit(&map, &["city"]); // {"name": "Alice", "age": "30"}
use mudssky_utils::bytes::*;
// 解析字节字符串
let bytes = parse_bytes("1.5 GB").unwrap(); // 1610612736
// 格式化字节
let formatted = bytes(1024).unwrap(); // "1 KB"
// 自定义格式
let options = BytesOptions {
unit: Some(ByteUnit::MB),
decimal_places: 3,
..Default::default()
};
let custom = get_bytes_instance().convert_number(1048576, Some(options)).unwrap();
use mudssky_utils::function::*;
use tokio::time::Duration;
#[tokio::main]
async fn main() {
// 防抖动
let mut debouncer = Debouncer::new(Duration::from_millis(300));
debouncer.execute(|| println!("执行!")).await;
// 节流
let mut throttler = Throttler::new(Duration::from_millis(100));
throttler.execute(|| println!("节流执行!")).await;
// 重试机制
let result = with_retry(
|| async { Ok::<i32, Box<dyn std::error::Error + Send + Sync>>(42) },
&RetryOptions::default()
).await;
}
use mudssky_utils::{env::*, logger::*};
// 环境检测
if is_development() {
println!("开发环境");
}
if is_debug() {
println!("调试模式");
}
// 日志记录
let logger = Logger::new(LoggerConfig::default());
logger.info("应用启动");
logger.error("发生错误");
// JSON 格式日志
let json_logger = Logger::new(LoggerConfig {
formatter: Box::new(JsonFormatter::default()),
..Default::default()
});
json_logger.info("JSON 格式日志");
use mudssky_utils::math::*;
// 生成随机数
let random = random_int(1, 100).unwrap(); // 1-99 之间的随机数
// 从数组中随机选择
let item = get_random_item_from_array(&[1, 2, 3, 4, 5]).unwrap();
运行所有测试:
cargo test
运行特定模块测试:
cargo test --test string_tests
cargo test --test array_tests
cargo test --test object_tests
# ... 等等
检查代码质量:
cargo clippy -- -D warnings
生成文档:
cargo doc --no-deps --open
Result 类型进行优雅的错误处理本项目采用 MIT 许可证。
欢迎提交 Issue 和 Pull Request!请确保:
cargo testcargo clippy -- -D warningscargo fmt如果这个库对你有帮助,请给个 ⭐ Star!
MIT License
mudssky