5 个版本
0.3.4 | 2023 年 3 月 5 日 |
---|---|
0.3.3 | 2023 年 3 月 4 日 |
0.3.0 | 2022 年 2 月 12 日 |
0.2.0 |
|
0.1.0 |
|
在 #luhn 中排名 1
11KB
194 行
luhnr
为 Rust 提供的简单但高效的 Luhn 数字生成器和验证器。
我写这个库,因为我找不到一个可用的 Rust mod10 库。
用法
注意:库是为性能路径编写的,该路径是接受 u8 切片的函数
validate(number: &[u8])
generate_with_prefix(length: usize,prefix: &[u8])
generate(length: usize)
_str
方法由于需要额外的分配而速度指数级减慢,仅提供为便利
validate_str(number: &str)
generate_with_prefix_str(length: usize,prefix: &str)
generate_str(length: usize)
快速入门
验证 Luhn 数字
验证将返回 true
如果数字向量通过 Luhn 算法,或者 false
如果它失败。
use luhnr;
fn main() {
let number = vec![4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2, 4, 2];
println!("The number valiates as: {}", luhnr::validate(&number));
}
生成
生成将生成一个符合 Luhn 规范的数字,其长度与传入的长度相同。
use luhnr;
fn main() {
match luhnr::generate(16) {
Ok(v) => println!("The number is: {:?}", v),
Err(e) => println!("recieved error: {:?}", e),
}
}
或者传递一个前缀,并使用 generate_with_prefix
use luhnr;
fn main() {
let prefix = [4, 2, 4, 2, 4, 2];
match luhnr::generate_with_prefix(16, &prefix) {
Ok(v) => println!("The number is: {:?}", v),
Err(e) => println!("recieved error: {:?}", e),
}
}
基准测试
在 ./benches 中提供了 Criterion 基准测试。
在 Intel Core i9,2.4GHz,8 核 MacBook Pro 上
generate time: [133.52 ns 133.93 ns 134.41 ns]
generate_str time: [1.1067 µs 1.1201 µs 1.1368 µs]
依赖关系
~310KB