#id #nano #unique #uuid #nanoid

nid

生成和解析Nano ID

9个版本 (3个重大变更)

3.0.0 2024年4月14日
2.1.0 2024年4月14日
2.0.0 2024年4月4日
1.0.0 2024年4月2日
0.1.0 2024年4月2日

672解析实现

Download history 10/week @ 2024-04-27 4/week @ 2024-05-04 5/week @ 2024-05-11 16/week @ 2024-05-18 26/week @ 2024-05-25 23/week @ 2024-06-01 19/week @ 2024-06-08 12/week @ 2024-06-15 15/week @ 2024-06-22 3/week @ 2024-06-29 9/week @ 2024-07-06 27/week @ 2024-07-13 22/week @ 2024-07-20 50/week @ 2024-07-27 15/week @ 2024-08-03 38/week @ 2024-08-10

每月128次下载
用于 tower-request-id-nano

MIT/Apache

47KB
623

nid

CI status crates.io docs Apache 2.0 or MIT Licenses

生成和解析Nano ID。

Nano ID是一个小、安全、URL友好的唯一字符串ID。以下是一个Nano ID的示例

qjH-6uGrFy0QgNJtUh0_c

这个crate是使用JavaScript编写的原始Nano ID库的Rust实现。请参考原始库以获取关于Nano ID的详细说明。

入门指南

将以下内容添加到您的Cargo.toml

[dependencies]
nid = "3.0.0"

当您需要一个新的Nano ID时,可以使用Nanoid::new方法生成。

use nid::Nanoid;
let id: Nanoid = Nanoid::new();

您可以使用Nanoid::try_from_strstd::str::FromStrTryFrom<String>将字符串解析为Nano ID。

use nid::Nanoid;
let id: Nanoid = Nanoid::try_from_str("K8N4Q7MNmeHJ-OHHoVDcz")?;
let id: Nanoid = "3hYR3muA_xvjMrrrqFWxF".parse()?;
let id: Nanoid = "iH26rJ8CpRz-gfIh7TSRu".to_string().try_into()?;

如果Nano ID字符串是常量,您还可以使用nanoid宏在编译时解析它。

use nid::{nanoid, Nanoid};
let id = nanoid!("ClCrhcvy5kviH5ZozARfi");
const ID: Nanoid = nanoid!("9vZZWqFI_rTou3Mutq1LH");

Nano ID的长度默认为21。您可以通过指定泛型参数来更改它。

use nid::Nanoid;
let id: Nanoid<10> = "j1-SOTHHxi".parse()?;

您还可以使用不同的字母表。可用字母表列表在alphabet模块中。

use nid::{alphabet::Base62Alphabet, Nanoid};
let id: Nanoid<10, Base62Alphabet> = Nanoid::new();

示例

use nid::{alphabet::Base62Alphabet, Nanoid};

// Generate a new Nano ID and print it.
let id: Nanoid = Nanoid::new();
println!("{}", id);

// Parse a string into a Nano ID and convert it back to a string.
let id: Nanoid = "abcdefg1234567UVWXYZ_".parse()?;
let s = id.to_string();

// Parse a string into a Nano ID with a different length and alphabet.
let id: Nanoid<9, Base62Alphabet> = "abc123XYZ".parse()?;

功能

与其他Nano ID实现的比较

nanoidnano-id是Rust中其他Nano ID的实现。与nid的其他实现相比,主要区别在于nid有一个Nanoid类型来表示Nano IDs。此类型提供了一种安全生成和解析Nano IDs的方法。这与提供uuid类型的Uuid的crate相似,它提供了表示UUIDs的方法。

许可证

根据您选择的以下之一获得许可:

任选其一。

贡献

除非您明确声明,否则根据Apache-2.0许可证定义,您有意提交的任何旨在包含在作品中的贡献,均应按照上述方式双许可,不附加任何额外的条款或条件。

依赖

~0.5–1.1MB
~23K SLoC