4个版本
0.1.3 | 2020年11月21日 |
---|---|
0.1.2 | 2020年11月21日 |
0.1.1 | 2020年11月20日 |
0.1.0 | 2020年11月20日 |
#1627 在 数据结构
每月21次下载
14KB
68 行
Identifier
轻松生成128位id结构体
安装
[dependencies]
identifier = "0.1"
版本要求:rustc 1.31+
简单示例
前往生成器部分了解如何创建
use generators::uuid;
use identifier::{Display, FromStr, Identifier};
#[derive(Identifier, Eq, PartialEq, Display, FromStr)]
#[identifier(with = "uuid")]
pub struct UserId(u128);
fn main() {
let id = UserId::generate();
println!("generated user id: {}", id);
let parsed_id = "5ed9a942-223e-4639-a97c-6b6c41ac48d3".parse::<UserId>();
assert!(parsed_id.is_ok());
}
需要参数的生成器示例
use generators::random_id;
use identifier::{Display, FromStr, Identifier};
const KIND: u32 = 0x1111_ffff;
#[derive(Identifier, Eq, PartialEq, FromStr, Display)]
#[identifier(with = "random_id", params = "KIND, 0xabcd")]
pub struct PostId(u128);
fn main() {
let id = PostId::generate();
println!("generated post id: {}", id);
}
生成器
无参数(使用uuid crate)
mod uuid {
use uuid::Uuid;
pub fn generate() -> u128 {
Uuid::new_v4().as_u128()
}
pub fn validate(value: u128) -> bool {
if let Some(Version::Random) = Uuid::from_u128(value).get_version() {
true
} else {
false
}
}
}
有参数
mod random_id {
pub fn generate(kind: u32, seed: u16) -> u128 {
/* generate a random id with the given params ... */
}
pub fn validate(value: u128, kind: u32, _: u16) -> bool {
/* check it's a correct random id ... */
}
}
许可证
根据您选择,许可协议为以下之一
- Apache许可证第2版(LICENSE-APACHE或https://www.apache.org/licenses/LICENSE-2.0)
- MIT许可证(LICENSE-MIT或https://opensource.org/licenses/MIT)
。
贡献
除非您明确声明,否则根据Apache-2.0许可证定义的任何旨在包含在作品中的贡献,均应如上双重许可,不附加任何额外条款或条件。
依赖项
~0.3–0.8MB
~19K SLoC