15 个版本

0.1.15 2024年4月28日
0.1.14 2023年11月21日
0.1.13 2023年5月20日
0.1.12 2021年5月27日
0.1.1 2017年11月18日

#441 in 编码

Download history 87503/week @ 2024-05-03 95571/week @ 2024-05-10 98969/week @ 2024-05-17 110501/week @ 2024-05-24 111460/week @ 2024-05-31 96417/week @ 2024-06-07 96277/week @ 2024-06-14 96868/week @ 2024-06-21 81730/week @ 2024-06-28 97826/week @ 2024-07-05 122790/week @ 2024-07-12 135689/week @ 2024-07-19 116553/week @ 2024-07-26 130493/week @ 2024-08-02 154476/week @ 2024-08-09 127863/week @ 2024-08-16

551,638 每月下载量
830 个 crate (19 直接)中使用

MIT 许可证

130KB
1.5K SLoC

此库提供了从编码字符串定义编译时字节切片和数组的宏(使用常见的基,如 base64、base32 或十六进制,也可以使用自定义基)。它还提供了一个宏来定义用于在运行时与 data-encoding crate 一起使用的编译时自定义编码。

有关详细信息,请参阅文档

在 Rust 1.50 之前,您可能需要将以下内容添加到您的 .cargo/config.toml 中,才能在无需 std 或无需分配的环境中使用此库

[unstable]
features = ["host_dep"]

从 Rust 1.51 开始,您可能需要将以下内容添加到您的 Cargo.toml

[package]
resolver = "2"

lib.rs:

数据编码宏

此库提供了从编码字符串定义编译时字节数组的宏(使用常见的基,如 base64base32十六进制,以及自定义基)。它还提供了一个宏来定义在运行时与 data-encoding crate 一起使用的编译时自定义编码。

在 Rust 1.50 之前,您可能需要将以下内容添加到您的 .cargo/config.toml 中,才能在无需 std 或无需分配的环境中使用此库

[unstable]
features = ["host_dep"]

从 Rust 1.51 开始,您可能需要将以下内容添加到您的 Cargo.toml

[package]
resolver = "2"

示例

您可以从编码的字符串字面量定义编译时的字节切片

const HELLO_SLICE: &'static [u8] = &data_encoding_macro::hexlower!("68656c6c6f");
const FOOBAR_SLICE: &'static [u8] = &data_encoding_macro::base64!("Zm9vYmFy");

您也可以从编码的字符串字面量定义编译时的字节数组

data_encoding_macro::hexlower_array!("const HELLO" = "68656c6c6f");
data_encoding_macro::base64_array!("const FOOBAR" = "Zm9vYmFy");

您可以从其规范定义编译时的自定义编码

const HEX: data_encoding::Encoding = data_encoding_macro::new_encoding! {
    symbols: "0123456789abcdef",
    translate_from: "ABCDEF",
    translate_to: "abcdef",
};
const BASE64: data_encoding::Encoding = data_encoding_macro::new_encoding! {
    symbols: "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/",
    padding: '=',
};

依赖关系

~1.5MB
~36K SLoC