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 编码
每月 295 次下载
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