Rufl: 一个高效的Rust语言工具函数库

Rufl 是一个Rust语言工具函数库。它提供了许多工具函数,让你的rust开发变得更简单.

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]

欢迎star或提交代码共同使rufl更加强大。


这是一个从 https://juejin.cn/post/7368884169755836450 下的原始话题分离的讨论话题