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

binary_macros_impl

用于将字符串字面量中的类似base64编码解码为[u8]字面量的过程宏实现

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

Download history 720/week @ 2024-03-13 407/week @ 2024-03-20 128/week @ 2024-03-27 31/week @ 2024-04-03 47/week @ 2024-04-10 35/week @ 2024-04-17 30/week @ 2024-04-24 33/week @ 2024-05-01 30/week @ 2024-05-08 51/week @ 2024-05-15 40/week @ 2024-05-22 38/week @ 2024-05-29 87/week @ 2024-06-05 24/week @ 2024-06-12 55/week @ 2024-06-19 32/week @ 2024-06-26

每月下载量 207
binary_macros中使用

MIT许可证

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