15 releases
0.1.15 | Apr 28, 2024 |
---|---|
0.1.14 | Nov 21, 2023 |
0.1.13 | May 20, 2023 |
0.1.12 | May 27, 2021 |
0.1.1 | Nov 18, 2017 |
#924 in Encoding
596,928 downloads per month
Used in 894 crates
(20 directly)
130KB
1.5K
SLoC
This library provides macros to define compile-time byte slices and arrays from encoded strings (using common bases like base64, base32, or hexadecimal, and also custom bases). It also provides a macro to define compile-time custom encodings to be used with the data-encoding crate.
See the documentation for more details.
Up to Rust 1.50, you may need to add the following to your .cargo/config.toml
to use this library in no-std or no-alloc environments:
[unstable]
features = ["host_dep"]
From Rust 1.51, you may need to add the following to your Cargo.toml
:
[package]
resolver = "2"
lib.rs
:
Macros for data-encoding
This library provides macros to define compile-time byte arrays from encoded strings (using common bases like base64, base32, or hexadecimal, and also custom bases). It also provides a macro to define compile-time custom encodings to be used with the data-encoding crate at run-time.
Up to Rust 1.50, you may need to add the following to your .cargo/config.toml
to use this
library in no-std or no-alloc environments:
[unstable]
features = ["host_dep"]
From Rust 1.51, you may need to add the following to your Cargo.toml
:
[package]
resolver = "2"
Examples
You can define a compile-time byte slice from an encoded string literal:
const HELLO_SLICE: &'static [u8] = &data_encoding_macro::hexlower!("68656c6c6f");
const FOOBAR_SLICE: &'static [u8] = &data_encoding_macro::base64!("Zm9vYmFy");
You can also define a compile-time byte array from an encoded string literal:
data_encoding_macro::hexlower_array!("const HELLO" = "68656c6c6f");
data_encoding_macro::base64_array!("const FOOBAR" = "Zm9vYmFy");
You can define a compile-time custom encoding from its specification:
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: '=',
};
Dependencies
~1.5MB
~37K SLoC