c32 0.3.0

Rust implementation of Crockford's Base32 encoding
Documentation

c32

Crates.io Documentation Build Status License License: MIT

Rust implementation of Crockford's Base32 encoding scheme.

[dependencies]
c32 = "0.3.0"

Usage

This crate provides two approaches for encoding/decoding:

// with `alloc` ...

#[cfg(feature = "alloc")]
fn example_en_alloc() {
    let bytes = b"usque ad finem";
    let encoded = c32::encode(bytes);
    assert_eq!(encoded, "1TQ6WBNCMG62S10CSMPWSBD");
}

#[cfg(feature = "alloc")]
fn example_de_alloc() {
    let encoded = "1TQ6WBNCMG62S10CSMPWSBD";
    let decoded = c32::decode(encoded).unwrap();
    assert_eq!(decoded, b"usque ad finem");
}

// or 'no_std' ...

fn example_en_no_std() {
    const bytes: &[u8; 14] = b"usque ad finem";
    let mut buffer = [0; c32::encoded_len(bytes.len())];
    let pos = c32::encode_into(bytes, &mut buffer).unwrap();
    assert_eq!(&buffer[..pos], b"1TQ6WBNCMG62S10CSMPWSBD")
}

fn example_de_no_std() {
    const bytes: &[u8; 23] = b"1TQ6WBNCMG62S10CSMPWSBD";
    let mut buffer = [0; c32::decoded_len(bytes.len())];
    let pos = c32::decode_into(bytes, &mut buffer).unwrap();
    assert_eq!(&buffer[..pos], b"usque ad finem")
}

Security

License

Contribution