#base64 #const-fn #codec #no-std

no-std const_base

在编译时解码/编码 base 64/32/16 字符串

4 个版本

0.2.0 2022 年 12 月 5 日
0.1.2 2021 年 8 月 15 日
0.1.1 2021 年 8 月 12 日
0.1.0 2021 年 8 月 10 日

#2058 in 编码

Download history 9/week @ 2024-03-14 9/week @ 2024-03-28 25/week @ 2024-04-04 73/week @ 2024-04-11 38/week @ 2024-04-18 1/week @ 2024-04-25 2/week @ 2024-05-30 30/week @ 2024-06-06 50/week @ 2024-06-13 37/week @ 2024-06-20 5/week @ 2024-06-27

122 每月下载量

Zlib 许可证

98KB
2K SLoC

Rust crates-io api-docs

用于在编译时解码/编码 base 64/32/16 字符串。

示例

编码

use const_base::{encode_as_str, Config};

{
    // the encoding macros can take both `&str` and `&[u8]` constants.
    const OUTA: &str = encode_as_str!("foo", Config::B64);
    const OUTB: &str = encode_as_str!(b"foo", Config::B64);
    
    assert_eq!(OUTA, "Zm9v");
    assert_eq!(OUTB, "Zm9v");
}
{
    const BYTES: &[u8] = b"hello";

    // the encoding macros can encode_as_str non-literal constants
    const OUT: &str = encode_as_str!(BYTES, Config::B64_URL_SAFE);
    
    assert_eq!(OUT, "aGVsbG8=");
}

解码

use const_base::{decode, Config};

{
    const OUT: &[u8] = decode!("MZXW6===", Config::B32);
    
    assert_eq!(OUT, b"foo");
}
{
    const BYTES: &[u8] = b"f000";

    // this macro can decode non-literal constants
    const OUT: &[u8] = decode!(BYTES, Config::HEX);
    
    assert_eq!(OUT, &[0xF0, 0x00]);
}

无 std 支持

const_base#![no_std],可以在 Rust 可以使用的任何地方使用。

最低支持的 Rust 版本

const_base 需要 Rust 1.64.0。

依赖项

~215KB