1 个不稳定版本
0.4.0-alpha.0 | 2023年11月17日 |
---|
#5 in #base64-url
在 base64id-derive 中使用
40KB
911 行
base64id-core
此crate包含base64id-rs的核心库代码。您不应直接使用此crate。请参阅此处。
许可证
许可协议为以下之一:
- Apache License,版本2.0 (LICENSE-APACHE 或 https://apache.ac.cn/licenses/LICENSE-2.0)
- MIT许可证 (LICENSE-MIT 或 http://opensource.org/licenses/MIT)
任选其一。
贡献
除非您明确声明,否则您提交给工作的任何贡献,根据Apache-2.0许可证的定义,应按上述方式双重许可,没有任何额外的条款或条件。
lib.rs
:
此crate允许将固定长度的64位、32位和16位整数表示为base64url编码的字符串。这在Web环境下交换唯一标识符非常有用;例如,尽可能少地发送SQL主键到客户端。
默认情况下,此crate是#![no_std]
。您可以使用std
cargo功能标志来启用标准库支持。
快速入门
将以下内容添加到您的Cargo.toml
文件中。
[dependencies]
base64id = { version = "0.3", features = ["std", "rand"] }
编码
您可以使用rand
功能标志生成一个随机ID,如下所示。
use base64id_core::Id64;
fn main() {
let id: Id64 = rand::random();
println!("{id}"); // 3Zohppb9XMw
}
解码
您可以使用它的FromStr
实现将字符串解码为Id64
。
use std::str::FromStr;
use base64id_core::{Error, Id64};
fn main() -> Result<(), Error> {
let id = Id64::from_str("AAAAAAAAAAE")?;
assert_eq!(id, Id64::from(1u64));
Ok(())
}
有关解码错误,请参阅[Error]枚举。
Serde
您可以使用serde
功能标志从Id64
、Id32
和Id16
中派生Serialize
和Deserialize
。
示例
将json字符串反序列化为Id32
let id: Id32 = serde_json::from_str(r#""CyRWFA""#)?;
assert_eq!(id, Id32::from(186930708));
序列化包含 Id64
的结构体
#[derive(Serialize)]
struct Record {
pub id: Id64,
}
let record = Record { id: Id64::from(5869384017340884593i64) };
assert_eq!(
serde_json::to_string(&record)?,
r#"{"id":"UXQ9qpv1ZnE"}"#
);
SQLx
您可以使用 sqlx
特性标志从 Id64
、Id32
和 Id16
推导出 Type
和 FromRow
。
这将允许您在不进行手动类型转换的情况下,向任何 SQLx 支持的数据库添加、更新或查询值。
值将根据其 i64
、i32
和 i16
表示形式转换为 SQL 数据类型。
开发中的随机值
从命令行,您可以快速生成自己的随机值,以及相应的有符号和无符号整数。
cargo run --example random_sample ([64|32|16])
警告! 此命令的输出可能不稳定,可能会随时更改。
依赖项
~0–10MB
~107K SLoC