9个版本 (1个稳定版)
使用旧的Rust 2015版
1.0.0 | 2020年9月25日 |
---|---|
0.6.0 | 2017年3月2日 |
0.5.3 | 2017年3月2日 |
0.5.0 | 2017年2月28日 |
0.3.1 | 2017年2月28日 |
#117 in #binary-encoding
每月下载量 207
在binary_macros中使用
4KB
82 行
binary_macros
Rust宏,用于在编译时将字符串字面量中的base64和十六进制编码解码为[u8]字面量。
版本0.6旨在提供稳定的接口。稍后将发布1.0版本。在稳定Rust上测试并运行。第一个支持的版本是1.15.0。欢迎提交错误报告、pull requests等!
这些宏有什么用?假设你想在crate中包含一个二进制blob,比如一个公钥。你可以使用Rust std
中的include_bytes!()
宏来实现。然而,编辑、查看和复制粘贴原始二进制blob是困难的!这就是为什么公钥通常以base64格式分发的原因。另一方面,如果你使用include_str!()
宏包含文本,你将需要在运行时解码它。为什么要在运行时延迟它,如果你可以在编译时完成呢?
要开始使用,请将以下内容添加到你的Cargo.toml依赖项中
[dependencies]
binary_macros = "0.6"
并将以下内容添加到你的源代码中
#[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 'a' 的编号97
base2!("01100001") // Binary. Uses numbers 0-1. Group of 8 digits = 1 byte.
base4!("1201") // Base4. Uses numbers 0-3. Group of 4 digits = 1 byte.
base8!("302=====") // Octal. Uses numbers 0-7. Group of 8 digits = 3 bytes, uses = as end padding.
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.
base2_nopad!("01100001") // No padding version of base2.
base4_nopad!("1201") // No padding version of base4.
base8_nopad!("302") // No padding version of base8.
base16_nopad!("61") // No padding version of base16.
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 crate提供的在稳定版Rust中使用过程宏感叹号的便捷方法。
依赖项
~155KB