#codec #string-literal #base64 #binary-encoding #hex #decoding #binary

binary_macros

将字符串字面量中的类似base64的编码解码为[u8]字面量的宏

15个版本 (1个稳定版本)

使用旧的Rust 2015

1.0.0 2020年9月25日
0.6.3 2017年3月3日
0.5.4 2017年3月2日
0.5.0 2017年2月28日
0.1.2 2016年8月24日

#2070 in 编码

Download history 34/week @ 2024-04-22 13/week @ 2024-04-29 37/week @ 2024-05-06 20/week @ 2024-05-13 59/week @ 2024-05-20 23/week @ 2024-05-27 96/week @ 2024-06-03 22/week @ 2024-06-10 17/week @ 2024-06-17 73/week @ 2024-06-24 9/week @ 2024-07-01 19/week @ 2024-07-08 14/week @ 2024-07-15 202/week @ 2024-07-22 22/week @ 2024-07-29 55/week @ 2024-08-05

每月 295 次下载

MIT 协议

6KB

binary_macros

Rust宏,用于在编译时将字符串字面量中的base64和十六进制编码解码为[u8]字面量。

欢迎提交错误报告、pull请求等!

为什么这些宏很有用呢?比如说,你想要在你的crate中包含一个二进制数据块,比如一个公钥。你可以使用Rust std 中的 include_bytes!() 宏来做到这一点。然而,编辑、查看和复制粘贴原始二进制数据块是困难的!这也是为什么公钥通常以base64形式分发的原因。另一方面,如果你使用 include_str!() 宏包含文本,你将需要在运行时对其进行解码。为什么要在运行时延迟解码,如果你可以在编译时完成它呢?

要开始使用,请将以下内容添加到你的Cargo.toml依赖项中

[dependencies]
binary_macros = "1.0.0"

并将以下内容添加到你的源代码中

#[macro_use]
extern crate binary_macros;

...然后你就可以使用这些宏了!

let public_key = base64!("aeSwwNywhbrmSuk32vuZmQRWHOKXbU1LziU18GAxVOE=");

这个crate还支持在输入前添加 file:env: 来从文件(相对于当前工作目录的路径)或环境变量中加载输入。 env: 前缀也支持 .env 文件。(请参阅 rust-dotenv

let public_key_a = base64!("file:id_rsa.pub");
let public_key_b = base64!("env:MYCRATE_PUBLIC_KEY");

包含的宏

例如,使用不同的编码包含ASCII码97('a')

base16!("61") // Hexadecimal. Uses numbers 0-9 and A-F. Group of 2 digits = 1 byte.
base32!("C4======") // Base32. Uses numbers A-Z and 2-7. Group of 8 digits = 5 bytes, uses = as end padding.
base32hex!("ME======") // Base32 that uses extended hexadecimal: 0-9 and A-V. Group of 8 digits = 5 bytes, uses = as end padding.
base64!("YQ==") // Base64. Uses numbers A-Z, a-z, 0-9, + and /. Group of 4 digits = 3 bytes, uses = as end padding.
base64url!("_A==") // URL-compatible Base64. Uses numbers A-Z, a-z, 0-9, - and _. Group of 4 digits = 3 bytes, uses = as end padding.
base32_nopad!("C4") // No padding version of base32.
base32hex_nopad!("ME") // No padding version of base32hex.
base64_nopad!("YQ") // No padding version of base64.
base64url_nopad!("_A") // No padding version of base64url.

感谢data-encoding crate提供了广泛的编码,以及proc-macro-hack提供了在稳定Rust上使用过程宏的简单方法。(这个crate将继续使用proc-macro-hack来支持旧编译器。)

依赖项

~155KB