#luhn #validation #mod10 #modulus10

luhnr

一个简单但高效的 Luhn 数字生成器和验证器

5 个版本

0.3.4 2023 年 3 月 5 日
0.3.3 2023 年 3 月 4 日
0.3.0 2022 年 2 月 12 日
0.2.0 2022 年 2 月 11 日
0.1.0 2022 年 2 月 11 日

#luhn 中排名 1

MIT/Apache

11KB
194

luhnr

为 Rust 提供的简单但高效的 Luhn 数字生成器和验证器。

我写这个库,因为我找不到一个可用的 Rust mod10 库。

用法

API 文档

注意:库是为性能路径编写的,该路径是接受 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