Rufl是”rust util function"的缩写。
- 💪 强大: 支持常用开发特性, string, collection, random, file...
- 💎 纯净: 保持最小范围外部依赖。
- 🛠 简洁: 结构组织良好,测试所有API函数。
- 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. Collection mod包含用于操作集合数据类型的工具函数。 回到目录
use rufl::collection;
-
all_match: 如果集合的所有元素都通过判断函数检查,则返回true。 [doc]
-
chunk: 按照size参数均分vector。[doc]
-
count: 返回给定元素在集合中出现的次数。 [doc]
-
count_by: 使用判断函数迭代集合的元素,返回所有匹配元素的数量。 [doc]
-
difference: 比较两个集合元素,返回不相等的元素集合 [doc]
-
difference_by: 将两个集合中的每个元素调用比较函数,并比较它们的返回值,如果不相等返回在第一个参数集合中对应的值。[doc]
-
difference_with: 接受比较器函数,该比较器被调用以将两个集合的元素进行比较。结果值的顺序和引用由第一个集合确定。 [doc]
-
fill: 用初始值填充vector的元素。 [doc]
-
filter: 迭代集合的元素,返回通过判断函数的所有元素的集合。 [doc]
-
filter_map: 返回一个对给定集合应用过滤和映射的集合。 [doc]
-
find: 迭代集合的元素,返回符合判断函数的第一个元素及其索引。 [doc]
-
find_last: 迭代集合的元素,返回传递判断函数的最后一个元素及其索引。 [doc]
-
index_of: 返回在集合中找到第一次出现的元素的索引。 [doc]
-
insert_at: 在vector内的位置索引处插入一个元素。 [doc]
-
intersection: 创建所有集合中包含的唯一元素的vector。 [doc]
-
is_ascending_order: 检查集合中所有元素是否按升序排列。 [doc]
-
is_descending_order: 检查集合中所有元素是否按降序排列。 [doc]
-
is_sorted: 检查集合中的所有元素是否已排序(升序或降序)。 [doc]
-
last_index_of: 返回在集合中找到最后一次出现的元素的索引。 [doc]
-
map: 通过iteratee迭代器函数调用集合中的每个元素来创建新的元素集合。 [doc]
-
max: 返回集合元素的最大值。 [doc]
-
min: 返回集合元素的最小值。 [doc]
-
none_match: 如果集合中没有元素通过判断函数检查,则返回true。 [doc]
-
partition: 通过给定判断函数的评估对集合元素进行分区。 [doc]
-
reduce: 对集合元素执行reduce操作。 [doc]
-
reduce_right: 类似Reduce操作,迭代切片元素顺序从右至左。 [doc]
-
remove_all: 删除vector内的所有特定元素。 [doc]
-
replace_all: 将vector中的所有旧元素替换为新元素 [doc]
-
replace_n: 将vector中的前n个旧元素替换为新元素。[doc]
-
shuffle: 返回打乱值的vector。 [doc]
-
some_match: 如果集合的任何一个元素通过判断函数检查,则返回true。 [doc]
-
union: 在所有集合之间创建唯一元素的vector。 [doc]
-
union_by: 在两个集合之间创建唯一元素的vector。 接受为每个集合的每个元素调用的判断函数,以生成计算唯一性的标准。 [doc]
-
unique: 删除集合(array、vector)中的重复元素,使用 PartialEq 相等比较。 [doc]
-
unique_by: 使用集合元素调用提供的自定义比较函数,返回唯一元素的vector。[doc]
2. Eventbus实现了一个简单的发布/订阅事件库。回到目录
use rufl::eventbus;
-
Event: 事件是一个可以保存任何数据类型的结构。然后将其发布到事件总线。一旦发布,事件就会在事件总线运行时传递给每个订阅者。 [doc]
-
EventBus: Eventbus是所有事件的中心枢纽。 它负责管理所有订阅者并发布与事件总线相关的事件。 [doc]
3. File mod包括文件操作相关工具函数。回到目录
use rufl::file;
-
clear: 清空文件内容。 [doc]
-
copy_dirs: 将src路径中的所有目录复制到dest路径。 [doc]
-
create: 在指定路径中创建一个文件并返回它。 [doc]
-
file_names: 返回特定目录路径的所有文件名。 [doc]
-
get_md5: 获取文件md5值。 [doc]
-
is_symlink: 检查文件是否是符号链接文件。 [doc]
-
read_to_buffer: 读取文件到缓冲区字节数组。 [doc]
-
read_to_lines: 读取文件并返回行字符串vector。 [doc]
-
read_to_string: 将文件读取为字符串。 [doc]
-
write_to: 将数据写入文件,如果文件不存在,则创建它。 [doc]
4. Math mod包括一些数学计算函数。回到目录
use rufl::math;
-
abs: 计算绝对值。 [doc]
-
average: 计算平均数。 [doc]
-
factorial: 计算阶乘。[doc]
-
fib_nth: 计算斐波那契数列的第n个值。 [doc]
-
fib_seq: 返回斐波那契数列。 [doc]
-
fib_sum: 计算斐波那契数列的总和值。 [doc]
-
gcd: 计算最大公约数。 [doc]
-
harmonic: 计算谐波值。 [doc]
-
is_prime: 判断素数。 [doc]
-
lcm: 计算最小公倍数。 [doc]
-
percent: 计算百分比。 [doc]
-
round: 将小数点后n位四舍五入为数字。 [doc]
-
round_down: 向下四舍五入并截去n位小数。 [doc]
-
round_up: 对数字进行四舍五入并截去n位小数。 [doc]
-
sqrt: 计算开平方。 [doc]
-
sum: 计算和值。 [doc]
-
to_angle: 弧度转角度。 [doc]
-
to_radian: 角度转弧度。 [doc]
-
truncate: 将数字截断至小数点后n位。 [doc]
5. Random mod用于生成随机字符串和数字。回到目录
use rufl::random;
-
alpha_number: 生成随机字母或数字字符串。 [doc]
-
alphabet: 生成随机英文字母字符串。 [doc]
-
lower: 生成随机小写英文字母字符串。 [doc]
-
numberic: 生成随机数字字符串。 [doc]
-
symbol: 生成随机特殊字符字符串。 (!@#$%^&*()_+-=[]{}|;’:",./<>?). [doc]
-
string: 生成随机字符串(包括字母, 数字, 符号)。 [doc]
-
upper: 生成随机大写英文字母字符串。 [doc]
6. String mod包括操作字符串(String&str)的工具函数回到目录
use rufl::string;
-
add_commas: 从右侧每3个数字向数字值添加逗号。支持前缀符号。 [doc]
-
after: 返回源字符串中第一次出现指定子字符串之后的子字符串。 [doc]
-
after_last: 返回源字符串中最后一次出现指定子字符串之后的子字符串。 [doc]
-
before: 返回源字符串中第一次出现指定子字符串之前的子字符串。 [doc]
-
before_last: 返回源字符串中最后一次出现指定子字符串之前的子字符串。 [doc]
-
camel_case: 将字符串转换为驼峰式。[doc]
-
capitalize: 将字符串的第一个字符转换为大写,其余字符转换为小写。 [doc]
-
count_by: 使用谓词函数计算目标字符串中的字符数,返回所有匹配字符的数量。 [doc]
-
count_chars: 返回目标字符串中的字符数。 [doc]
-
count_graphemes: 返回目标字符串中的字素计数。 [doc]
-
count_words: 返回目标字符串中的单词字数。 [doc]
-
cut: 在源字符串中搜索子字符串“sep”,并在子字符串“sep”第一次出现时将源字符串分成两部分:之前和之后。 [doc]
-
hide: 隐藏源字符串中的一些字符并替换为特定的子字符串。 [doc]
-
index: 搜索字符串并返回指定搜索子字符串第一次出现的索引。 [doc]
-
index_all: 搜索字符串并返回指定搜索子字符串出现的所有索引。 [doc]
-
is_alpha: 验证字符串是否是只包含字母字符。 [doc]
-
is_alphanumberic: 验证字符串是否是只包含字母和数字字符。 [doc]
-
is_digit: 验证字符串是否是指包含数字(0-9)。 [doc]
-
is_dns: 验证字符串是否是有效的dns。 [doc]
-
is_email: 验证字符串是否是有效的email地址。[doc]
-
is_ipv4: 验证字符串是否是有效的ipv4地址。[doc]
-
is_ipv6: 验证字符串是否是有效的ipv6地址。 [doc]
-
is_lowercase: 验证字符串是否只包含小写字符。 [doc]
-
is_numberic: 验证字符串是否可以转成有效数字。 [doc]
-
is_strong_password: 验证字符串是否是有效密码(强密码)。 [doc]
-
is_uppercase: 验证字符串是否只包含大写字符。 [doc]
-
is_url: 验证字符串是否是有效的url. [doc]
-
kebab_case: 将字符串转换为短横线大小写。 [doc]
-
last_index: 搜索字符串并返回指定搜索子字符串最后一次出现的索引。 [doc]
-
lower_first: 将字符串的第一个字符转换为小写字符。 [doc]
-
pad: 如果字符串长度短于size,则在左右两侧填充字符串。 [doc]
-
pad_end: 如果字符串长度短于size,则在右侧填充字符串。[doc]
-
pad_start: 如果字符串长度短于size,则在左侧填充字符串。[doc]
-
pascal_case: 将字符串转换为帕斯卡大小写。 [doc]
-
remove_all: 删除源字符串中出现的所有指定子字符串。 [doc]
-
remove_first: 删除源字符串中第一次出现的指定子字符串。 [doc]
-
remove_last: 删除源字符串中最后一次出现的指定子字符串。 [doc]
-
removen: 删除源字符串中的前n个匹配子字符串。 [doc]
-
snake_case: 将字符串转换为蛇形大小写。 [doc]
-
split_chars: 将输入字符串拆分为字符vector。 [doc]
-
split_graphemes: 将目标字符串拆分为字素str的vector。 [doc]
-
split_words: 将输入字符串拆分为其单词vector(基于大写字母或数字的位置)。 [doc]
-
starts_with_offset: 检查字符串是否在偏移位置以指定前缀开头。 [doc]
-
substring: 返回目标字符串中从起始索引到结束索引(不包括结束索引)的部分。 [doc]
-
title_case: 将字符串转换为标题大小写。 [doc]
-
upper_first: 将字符串的第一个字符转换为大写字符。 [doc]