3 个版本
0.1.3 | 2024 年 5 月 15 日 |
---|---|
0.1.2 | 2024 年 4 月 16 日 |
0.1.1 | 2024 年 4 月 16 日 |
#308 在 算法 中
200KB
3.5K SLoC
鲁弗是 Rust 的工具函数库。它提供了一系列有用的函数,使你的 Rust 开发更加容易。
鲁弗是 "Rust 工具函数库" 的缩写。
简体中文
功能
- 强大:支持常用的开发功能,字符串、集合、随机、文件等。
- 纯净:尽量减少外部依赖。
- 简单:结构良好,每个函数都有测试。
安装
- cargo add rufl
[dependencies]
rufl = "0.1.3"
示例
这里以字符串函数 add_commas
(在数字值中每隔 3 位添加逗号。前面有前缀符号。)为例,并需要使用 rufl::string
模块。
代码
use rufl::string;
fn main() {
let money_amount: String = string::add_commas("1234567", "$");
println!("current money is {}", money_amount); // current money is $1,234,567
}
文档
索引
1. 集合模块包含一些操作集合数据类型的实用函数。 [索引]
use rufl::collection;
-
all_match: 如果集合中的所有元素都通过谓词函数检查,则返回 true。[文档]
-
chunk: 返回一个元素长度为 size 的组分割的向量。[文档]
-
count: 返回给定元素在集合中的出现次数。[文档]
-
count_by: 使用谓词函数遍历集合中的元素,返回所有匹配元素的数目。[文档]
-
difference: 使用等价比较创建一个不包括在给定集合中的值的向量。[文档]
-
difference_by: 与 difference 类似,但它接受迭代器,该迭代器对集合的每个元素进行调用,并生成比较的准则。[文档]
-
difference_with: 与 difference 类似,但它接受一个比较器,该比较器用于比较集合中的元素和值。[文档]
-
fill: 使用初始值填充向量的元素。[文档]
-
filter: 遍历集合的元素,返回通过谓词函数的所有元素组成的集合。[文档]
-
filter_map: 返回一个集合,该集合对给定集合应用过滤和映射。[文档]
-
find: 遍历集合的元素,返回第一个通过谓词函数的元素及其索引。[文档]
-
find_last: 遍历集合的元素,返回最后一个通过谓词函数的元素及其索引。[文档]
-
index_of: 返回元素在集合中第一次出现的位置索引。[文档]
-
insert_at: 在向量中的指定位置插入一个元素。[文档]
-
intersection: 创建一个向量,包含所有集合中包含的唯一元素。[文档]
-
is_ascending_order: 检查集合中的所有元素是否按升序排列。[文档]
-
is_descending_order: 检查集合中的所有元素是否按降序排列。[文档]
-
is_sorted: 检查集合中的所有元素是否已排序(升序或降序)。[文档]
-
last_index_of: 返回元素在集合中最后一次出现的位置索引。[文档]
-
map: 通过将集合中的每个元素传递给迭代器来创建新的元素集合。[文档]
-
max: 返回集合的最大值。[文档]
-
min: 返回集合的最小值。[文档]
-
none_match: 如果集合中没有元素通过谓词函数的检查,则返回 true。[文档]
-
partition: 使用给定的谓词函数评估集合元素进行分区。[文档]
-
reduce: 将集合减少为一个值,这是通过迭代器运行集合中每个元素的累积结果。[文档]
-
reduce_right: 类似于 reduce,但它是从右到左遍历集合的元素。[文档]
-
remove_all: 从向量中移除所有特定元素。[文档]
-
replace_all: 在向量中将所有旧项替换为新项。[文档]
-
replace_n: 在向量中将前 count n 个旧元素替换为新元素。[文档]
-
shuffle: 返回一个打乱顺序的值向量。[文档]
-
some_match: 如果集合中的任何元素通过谓词函数的检查,则返回 true。[文档]
-
union: 创建一个包含所有集合中唯一元素的向量。[文档]
-
union_by: 在两个集合之间创建一个唯一元素向量。它接受一个迭代器,该迭代器为每个集合中的每个元素调用,以生成计算唯一性的标准。[文档]
-
unique: 从集合(数组、向量)中删除重复元素,使用 PartialEq 等价比较。[文档]
-
unique_by: 调用提供的自定义比较器与集合中的元素,返回一个唯一元素向量。[文档]
2. Eventbus 实现了一个简单的发布/订阅事件库。索引
use rufl::eventbus;
-
Event: 事件是一个可以保存任何数据类型的结构。它随后被发布到事件总线。一旦发布,当事件总线运行时,事件将被传递给每个订阅者。[文档]
-
EventBus: 事件总线是所有事件的中心枢纽。它负责管理所有订阅者并发布与事件总线相关的事件。[文档]
3. File mod 包含处理文件操作的一些实用函数。索引
use rufl::file;
-
clear: 清除文件内容。[文档]
-
copy_dirs: 将 src 路径下的所有目录复制到 dst 路径。[文档]
-
create: 在路径中创建文件并返回它。[文档]
-
file_names: 返回指定目录路径下的所有文件名。[文档]
-
get_md5: 获取文件的 md5 值。[文档]
-
is_symlink: 检查文件是否是符号链接文件。[文档]
-
read_to_buffer: 将文件读取到缓冲区字节数组。[文档]
-
read_to_lines: 读取文件并返回行字符串向量。[文档]
-
read_to_string: 将文件读取到字符串。[文档]
-
write_to: 将数据写入文件,如果文件不存在,则创建它。[文档]
4. Math mod 包含处理数学计算的一些实用函数。索引
use rufl::math;
-
abs: 返回数字 n 的绝对值。[文档]
-
average: 计算数字向量的平均值。[文档]
-
factorial: 计算数字 n 的阶乘。[文档]
-
fib_nth: 计算斐波那契数列的第 n 个值。[文档]
-
fib_seq: 返回斐波那契数列。[文档]
-
fib_sum: 计算斐波那契数列的总和。[文档]
-
gcd: 返回整数的最大公约数(GCD)。[文档]
-
harmonic: 计算数字 n 的调和值。[文档]
-
is_prime: 检查数字是否为素数。[文档]
-
lcm: 返回整数的最大公约数(lcm)。[文档]
-
percent: 计算百分比。[文档]
-
round: 将数字四舍五入到n位小数。[文档]
-
round_down: 向下取整并截断到n位小数。[文档]
-
round_up: 向上取整并截断到n位小数。[文档]
-
sqrt: 计算浮点数n的平方根。[文档]
-
sum: 计算数字向量的和。[文档]
-
to_angle: 将弧度值转换为角度值。[文档]
-
to_radian: 将角度值转换为弧度值。[文档]
-
truncate: 将数字截断到小数点后n位。[文档]
5. 随机模块包含用于生成随机数字或字符串的几个实用函数。索引
use rufl::random;
-
alpha_number: 生成随机字母数字字符串。[文档]
-
alphabet: 生成随机字母字符串。[文档]
-
lower: 生成随机小写英文字母字符串。[文档]
-
numberic: 生成随机数字字符串。[文档]
-
symbol: 生成只包含特殊字符(!@#$%^&*()_+-=[]{}|;’”,./<>?)的随机字符串。[文档]
-
string: 生成随机字符串(所有类型的字符:字母、数字、符号)。[文档]
-
upper: 生成随机大写英文字母字符串。[文档]
6. 字符串模块包含处理字符串的几个实用函数。索引
use rufl::string;
-
add_commas: 每隔三位数字在数字值前添加逗号。使用前缀符号。[文档]
-
after: 返回源字符串中指定子字符串之后的部分。[文档]
-
after_last: 返回源字符串中指定子字符串最后出现之后的部分。[文档]
-
before: 返回源字符串中指定子字符串之前的部分。[文档]
-
before_last: 返回源字符串中指定子字符串最后出现之前的部分。[文档]
-
camel_case: 将字符串转换为驼峰式。[文档]
-
capitalize: 将字符串的第一个字符转换为大写,其余转换为小写。[文档]
-
count_by: 根据谓词函数计算目标字符串中的字符数,返回所有匹配字符的数量。[文档]
-
count_chars: 返回目标字符串中的字符数。[文档]
-
count_graphemes: 返回目标字符串中的语素数。[文档]
-
count_words: 返回目标字符串中的单词数。[文档]
-
cut: 在源字符串中搜索子字符串‘sep’,并在子字符串‘sep’首次出现的位置将源字符串分割成两部分:在子字符串之前和之后。[文档]
-
hide: 隐藏源字符串中的某些字符,并用特定的子字符串替换。[文档]
-
index: 在字符串中搜索并返回指定搜索子字符串首次出现的索引。[文档]
-
index_all: 在字符串中搜索并返回指定搜索子字符串所有出现的索引。[文档]
-
is_alpha: 检查字符串是否只包含字母字符。[文档]
-
is_alphanumberic: 检查字符串是否只包含字母或数字字符。[文档]
-
is_digit: 检查字符串是否只包含数字字符(0-9)。[文档]
-
is_dns: 检查字符串是否是有效的域名。[文档]
-
is_email: 检查字符串是否是有效的电子邮件地址。[文档]
-
is_ipv4: 检查字符串是否是有效的IPv4地址。[文档]
-
is_ipv6: 检查字符串是否是有效的IPv6地址。[文档]
-
is_lowercase: 检查字符串是否只包含小写Unicode字符。[文档]
-
is_numberic: 检查字符串是否是数字(可以解析为数字)。[文档]
-
is_strong_password: 检查字符串是否是强密码。[文档]
-
is_uppercase: 检查字符串是否只包含大写Unicode字符。[文档]
-
is_url: 检查字符串是否是有效的URL。[文档]
-
kebab_case: 将字符串转换为短横线分隔的大小写。[文档]
-
last_index: 在字符串中搜索并返回指定搜索子字符串最后一次出现的索引。[文档]
-
lower_first: 将字符串的第一个字符转换为小写。[文档]
-
pad: 如果字符串长度小于指定长度,则在左右两侧填充字符串。如果填充字符无法均匀分割到长度,则截断填充字符。[文档]
-
pad_end: 如果字符串长度小于指定长度,则在右侧填充字符串。如果填充字符串超过长度,将被截断。[文档]
-
pad_start: 如果字符串长度小于指定长度,则在左侧填充字符串。如果填充字符串超过长度,将被截断。[文档]
-
pascal_case: 将字符串转换为驼峰命名法。[文档]
-
remove_all: 从源字符串中删除所有指定的子字符串。[文档]
-
remove_first: 从源字符串中删除首次出现的指定子字符串。[文档]
-
remove_last: 从源字符串中删除最后一次出现的指定子字符串。[文档]
-
removen: 从源字符串中删除前n次出现的子字符串。[文档]
-
snake_case: 将字符串转换为蛇形命名法。[文档]
-
split_chars: 将输入字符串分割成字符向量。[文档]
-
split_graphemes: 将目标字符串分割成字符组向量。[文档]
-
split_words: 根据首字母大写或数字的位置将输入字符串分割成单词向量。[文档]
-
starts_with_offset: 检查字符串在偏移位置是否以指定的前缀开头。[文档]
-
substring: 返回从起始索引到(但不包括)结束索引的字符串部分。[文档]
-
title_case: 将字符串转换为标题命名法。[文档]
-
upper_first: 将字符串的第一个字符转换为大写。[文档]
如何贡献
贡献指南
依赖项
~3–4MB
~71K SLoC