3 个版本

0.1.3 2024 年 5 月 15 日
0.1.2 2024 年 4 月 16 日
0.1.1 2024 年 4 月 16 日

#308算法

MIT 许可协议

200KB
3.5K SLoC


鲁弗是 Rust 的工具函数库。它提供了一系列有用的函数,使你的 Rust 开发更加容易。

鲁弗是 "Rust 工具函数库" 的缩写。

crates.io Documentation MSRV CI codecov License

简体中文

功能

  • 强大:支持常用的开发功能,字符串、集合、随机、文件等。
  • 纯净:尽量减少外部依赖。
  • 简单:结构良好,每个函数都有测试。

安装

  • 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