10个版本
0.0.10 | 2023年12月29日 |
---|---|
0.0.9 | 2023年12月23日 |
0.0.7 | 2023年1月7日 |
0.0.1 | 2022年12月30日 |
#640 in 解析器实现
每月50次下载
135KB
1K SLoC
Mini 函数
一个性能极高的实用和包装函数Rust库
• 网站 • 文档 • 报告错误 • 请求功能 • 贡献指南
概述
Mini Functions
是一个针对Rust设计的性能极高的实用和包装函数库,注重优化和效率。通过提供便捷的包装函数,我们的库旨在提供高级接口以完成常见任务,同时在底层利用Rust的性能优势。这些实用函数是任何Rust开发者的基本工具集,而库的设计抽象允许轻松集成到各种项目和应用程序中。
这些实用函数是任何Rust开发者的基本工具集,库的设计抽象允许轻松集成到各种项目和应用程序中。
目录
特性
- 用Rust构建 — 一种适用于构建高性能、可靠和安全的系统的现代编程语言。
- 高级实用函数 — 一组用于常见任务(如字符串操作、文件操作和数据解析)的高级抽象函数的集合。
- 包装函数,便于访问 — 提供更便捷的接口来访问和使用底层Rust库或API的包装函数。
- 优化和性能工具 — 用于优化和提升Rust代码性能的工具。
- 多平台支持 — 支持包括桌面、移动和Web在内的多种平台。
- 全面文档和示例 — 提供文档和示例,帮助开发者有效理解和使用库。
- 定期维护和更新 — 定期更新和维护,确保库保持最新和可靠。
功能
Mini Functions
是一个为Rust提供的函数库,提供了一套用于处理Rust应用程序各个方面的工具。该 mini-functions
库包含以下 非详尽
函数
函数 | 描述 |
---|---|
声明 ⧉ | 声明函数 用于检索和操作关于声明的信息。这些函数用于在JSON Web Tokens (JWT) 和 JSON Web Signatures (JWS) 中创建和管理声明。 |
常用 ⧉ | 常用函数 用于检索和操作关于常见数据类型的信息。 |
日期 ⧉ | 日期和时间函数 用于检索和操作关于日期和时间的信息。 |
错误 ⧉ | 错误函数 用于检索和操作关于错误的信息。 |
散列 ⧉ | 散列函数 用于检索和操作关于散列的信息。 |
日志 ⧉ | 日志函数 用于检索和操作关于日志的信息。 |
JWT ⧉ | JOT函数 用于检索和操作关于JSON Object Tokens (JOT) 的信息。 |
MD5 ⧉ | MD5函数 用于检索和操作关于MD5的信息。 |
二维码 ⧉ | 二维码函数 用于检索和操作关于二维码的信息。 |
随机 ⧉ | 随机函数 用于检索和操作关于随机数据的信息。 |
有关完整API详情,请参阅文档。
入门指南
使用 mini-functions
仅需几分钟即可开始使用。
需求
目前最低支持的Rust工具链版本是Rust 1.71.1 或更高版本(稳定版)。
安装
要安装 mini-functions
,您需要在您的机器上安装Rust工具链。您可以通过访问Rust网站上的说明来安装Rust工具链。
安装Rust工具链后,您可以使用以下命令安装 mini-functions
cargo install mini-functions
使用
要在项目中使用 mini-functions
库,请将以下内容添加到您的 Cargo.toml
文件中
[dependencies]
mini-functions = "0.0.10"
将以下内容添加到您的 main.rs
文件中
extern crate mini_functions;
use mini_functions::*;
然后您可以在应用程序代码中使用这些函数。
示例
mini-functions
库附带一组示例,展示了如何使用库。您可以在 examples
目录中找到这些示例。
要运行示例,请使用以下命令
cargo run --example <example-name>
示例 1:处理JWT声明
mini_functions
crate 提供了一个用于处理JWT声明的Claims结构体。
它包含以下函数
- 使用
set_claim
设置声明以添加声明。 - 使用
get_claim
获取声明以检索声明值。 - 使用
remove_claim
移除声明。
以下是一个完整示例
let mut claims = Claims::new();
claims.set_claim("iss", "https://example.com");
claims.set_claim("admin", "true");
let admin = claims.get_claim("admin").unwrap();
claims.remove_claim("admin");
这允许方便地设置、检索和删除JWT声明。
要运行JWT Claims示例,请使用以下命令
cargo run --example example_claims
示例 2:处理数学常数
mini_functions
库通过 Constants
结构体和 cmn_constants
宏提供对常用数学常数的访问。
它包含以下函数
- Constants::new() - 创建一个新的 Constants 实例
- constants() - 获取常数的完整列表
- constant(name) - 通过名称查找常数
- cmn_constants! - 将常数导入作用域
以下是一个完整示例
use cmn::{constants::{Constant, ConstantValue}, cmn_constants};
let c = Constants::new();
let euler = c.constant("EULER").unwrap();
cmn_constants! {
PI = cmn::constants::PI,
}
println!("Euler's constant: {euler}");
println!("Pi: {PI}");
这允许方便地访问数学常数。
运行 constants 示例
cargo run --example example_constants
示例 3:处理日期和时间
mini_functions
库提供了一个 DateTime
结构体,用于处理日期和时间。
它包含以下函数
DateTime::now
- 获取当前日期/时间DateTime::new
- 创建一个具有默认(UTC)时区的 DateTimeDateTime::new_with_tz
- 创建一个具有自定义时区的 DateTimeis_valid_day
- 检查日期值是否有效next_day
/previous_day
- 获取下一个/上一个日期from_str
- 解析日期/时间字符串relative_delta
- 将 delta 应用到 DateTime
以下是一个示例
let now = DateTime::now();
let tomorrow = now + chrono::Duration::days(1);
let yesterday = now - chrono::Duration::days(1);
println!("Today: {now}");
println!("Tomorrow: {tomorrow}");
println!("Yesterday: {yesterday}");
这允许方便地处理日期和时间。
运行日期/时间示例
cargo run --example example_date
示例 4:错误处理
mini_functions
库通过 ErrorType
枚举提供错误处理功能。
它包含以下函数
ErrorType::new
- 创建新的错误类型new_subtype
- 创建错误子类型
以下是一个示例
use mini_functions::errors::common::ErrorType;
let error = ErrorType::new("illegal_argument");
let sub_error = error.new_subtype("invalid_value");
println!("Main error: {error:?}");
println!("Sub-error: {sub_error:?}");
这允许使用自定义类型和子类型进行简单的错误处理。
运行错误示例
cargo run --example example_errors
示例 5:密码散列
mini_functions
库通过 Hash
结构体提供密码哈希和验证函数。
它包含以下函数
Hash::new_{algo}
- 为密码生成哈希set_password
- 更新哈希的密码verify
- 验证密码与哈希是否匹配to_string
- 将哈希转换为字符串
以下是一个示例
use mini_functions::hash::Hash;
let hash = Hash::new_argon2i("mypassword");
let is_valid = hash.verify("mypassword");
let updated_hash = hash.set_password("newpassword");
let new_is_valid = updated_hash.verify("newpassword");
这允许方便地生成和验证密码哈希。
运行密码哈希示例
cargo run --example example_hash
示例 7:日志记录
mini_functions
库通过 Log
结构体提供应用程序日志功能。
它包含如下函数:
Log::new
- 创建一个新的日志条目LogFormat
- 支持的日志格式
以下是一个以不同格式记录事件的示例
use mini_functions::logs::{Log, LogFormat, LogLevel};
let log_json = Log::new(
"message-id",
"2023-01-01T12:00:00Z",
LogLevel::Info,
"AppEvent",
"User logged in",
LogFormat::JSON
);
let log_clf = Log::new(
"message-id",
"2023-01-01T12:00:00Z",
LogLevel::Info,
"AuthEvent",
"User login successful",
LogFormat::CLF
);
这允许以各种文本和 JSON 格式进行灵活的日志记录。
运行日志示例
cargo run --example example_logs
示例 8:MD5散列
mini_functions
库通过 MD5
结构体提供 MD5 哈希生成功能。
它包含如下函数:
MD5::hexdigest
- 为输入生成 MD5 哈希MD5::new
- 创建 MD5 哈希器实例update
- 使用新的输入更新哈希器finalize
- 获取最终哈希
以下是一个哈希不同输入源的示例
use mini_functions::md5::MD5;
let digest = MD5::hexdigest("input string");
let mut hasher = MD5::new();
hasher.update(&[1, 2, 3]);
let hash = hasher.finalize();
这允许灵活地哈希字符串、字节数组、文件。
运行 MD5 示例
cargo run --example example_md5
示例 9:QR码
《mini_functions》crate 通过 QRCode
结构体提供 QR 码生成和操作功能。
它包含如下函数:
QRCode::from_string
- 从文本生成 QR 码to_png
- 转换为 PNG 图像colorize
- 为 QR 码着色resize
- 调整图像大小
并提供如下的宏
qr_code_to!
- QR 码生成宏
以下是一个示例
use mini_functions::qr;
let qr_code = qr::QRCode::from_string("https://example.com");
let img = qr_code.to_png(512);
qr::save_png(&img, "qr.png");
这允许方便地创建、操作和保存 QR 码。
运行 QR 码示例
cargo run --example example_qr
示例 10:随机数生成
《mini_functions》crate 通过 Random
结构体和相关函数提供随机数生成功能。
它包含如下函数:
Random::new
- 创建随机数生成器bool
- 随机布尔值int
- 随机整数float
- 随机浮点数bytes
- 随机字节向量
并提供如下的宏
rand_int!
- 范围内的随机整数rand_bool!
- 概率下的随机布尔值
以下是一个示例
use mini_functions::random::{Random, rand_int};
let mut rng = Random::new();
let rand_num = rand_int!(rng, 0, 10);
let rand_bool = rand_bool!(rng, 0.5);
这允许方便地生成随机数。
运行随机数示例
cargo run --example example_random
平台支持
《mini-functions》在以下平台上得到支持并进行了测试
一级平台
操作系统 | 目标 | 描述 | |
---|---|---|---|
✅ | Linux | aarch64-unknown-linux-gnu | ARM 架构的 64 位 Linux 系统 |
✅ | Windows | i686-pc-windows-gnu | 使用 GNU 工具链的 32 位 Windows 系统 |
✅ | Windows | i686-pc-windows-msvc | 使用 Microsoft Visual C 工具链的 32 位 Windows 系统 |
✅ | Linux | i686-unknown-linux-gnu | 32 位 Linux 系统(内核 3.2+, glibc 2.17+) |
✅ | macOS | x86_64-apple-darwin | 64 位 macOS 系统(10.7 狮子或更高版本) |
✅ | Windows | x86_64-pc-windows-gnu | 使用 GNU 工具链的 64 位 Windows 系统 |
✅ | Windows | x86_64-pc-windows-msvc | 使用 Microsoft Visual C 工具链的 64 位 Windows 系统 |
✅ | Linux | x86_64-unknown-linux-gnu | 64 位 Linux 系统(内核 2.6.32+, glibc 2.11+) |
二级平台
操作系统 | 目标 | 描述 | |
---|---|---|---|
✅ | Linux | aarch64-apple-darwin | Apple Silicon 上的 64 位 macOS |
✅ | Windows | aarch64-pc-windows-msvc | 使用 Microsoft Visual C 工具链的 ARM 架构 64 位 Windows 系统 |
✅ | Linux | aarch64-unknown-linux-musl | 使用 musl libc 的 ARM 架构 64 位 Linux 系统 |
✅ | Linux | arm-unknown-linux-gnueabi | ARMv6 Linux 系统(内核 3.2,glibc 2.17) |
✅ | Linux | arm-unknown-linux-gnueabihf | ARMv7 Linux 系统,硬浮点(内核 3.2,glibc 2.17) |
✅ | Linux | armv7-unknown-linux-gnueabihf | ARMv7 Linux 系统,硬浮点(内核 3.2,glibc 2.17) |
✅ | Linux | powerpc-unknown-linux-gnu | PowerPC Linux 系统(内核 3.2,glibc 2.17) |
✅ | Linux | powerpc64-unknown-linux-gnu | PowerPC64 Linux 系统(内核 3.2,glibc 2.17) |
✅ | Linux | powerpc64le-unknown-linux-gnu | PowerPC64le Linux 系统(内核 3.2,glibc 2.17) |
✅ | Linux | riscv64gc-unknown-linux-gnu | RISC-V Linux 系统(内核 3.2,glibc 2.17) |
✅ | Linux | s390x-unknown-linux-gnu | s390x Linux 系统(内核 3.2,glibc 2.17) |
✅ | Linux | x86_64-unknown-freebsd | x86-64 架构上的 64 位 FreeBSD 系统 |
✅ | Linux | x86_64-unknown-linux-musl | 64 位 Linux 系统(内核 2.6.32+, musl libc) |
GitHub Actions ⧉ 展示了在哪些平台上运行了《mini-functions》库的测试。
文档
信息:请访问我们的 网站 ⧉ 获取更多信息。您可以在 docs.rs ⧉、lib.rs ⧉ 和 crates.io ⧉ 上找到我们的文档。
语义版本控制策略
为了使发布周期透明,并努力保持向后兼容性,mini-functions
遵循语义版本控制⧉。
许可证
该项目受Apache许可证2.0版和MIT许可证的条款约束。
贡献
我们欢迎所有希望贡献的人。请参阅贡献说明⧉以获取更多信息。
对该项目的任何形式(问题、拉取请求等)的贡献必须遵守Rust 的行为准则⧉。
除非您明确说明,否则根据Apache-2.0许可证定义的,您提交给作品以供包含的任何贡献,将按照上述方式双许可,不附加任何额外条款或条件。
致谢
感谢所有mini-functions⧉的杰出贡献者,感谢他们的帮助和支持。
特别感谢Rust Reddit⧉社区为如何改进该项目提供了许多有用的建议。
依赖项
~26–37MB
~473K SLoC