Skip to main content

Crate base64_ng

Crate base64_ng 

Source
Expand description

base64-ng is a no_std-first Base64 encoder and decoder.

This initial release provides strict scalar RFC 4648-style behavior and caller-owned output buffers. Future SIMD fast paths will be required to match this scalar module byte-for-byte.

§Examples

Encode and decode with caller-owned buffers:

use base64_ng::{STANDARD, checked_encoded_len};

let input = b"hello";
const ENCODED_CAPACITY: usize = match checked_encoded_len(5, true) {
    Some(len) => len,
    None => panic!("encoded length overflow"),
};
let mut encoded = [0u8; ENCODED_CAPACITY];
let encoded_len = STANDARD.encode_slice(input, &mut encoded).unwrap();
assert_eq!(&encoded[..encoded_len], b"aGVsbG8=");

let mut decoded = [0u8; 5];
let decoded_len = STANDARD.decode_slice(&encoded, &mut decoded).unwrap();
assert_eq!(&decoded[..decoded_len], input);

Use the URL-safe no-padding engine:

use base64_ng::URL_SAFE_NO_PAD;

let mut encoded = [0u8; 3];
let encoded_len = URL_SAFE_NO_PAD.encode_slice(b"\xfb\xff", &mut encoded).unwrap();
assert_eq!(&encoded[..encoded_len], b"-_8");

Modules§

ct
Constant-time-oriented scalar decoding APIs.
stream
Streaming Base64 wrappers for std::io.

Structs§

Engine
A zero-sized Base64 engine parameterized by alphabet and padding policy.
Standard
The RFC 4648 standard Base64 alphabet.
UrlSafe
The RFC 4648 URL-safe Base64 alphabet.

Enums§

DecodeError
Decoding error.
EncodeError
Encoding error.

Constants§

STANDARD
Standard Base64 engine with padding.
STANDARD_NO_PAD
Standard Base64 engine without padding.
URL_SAFE
URL-safe Base64 engine with padding.
URL_SAFE_NO_PAD
URL-safe Base64 engine without padding.

Traits§

Alphabet
A Base64 alphabet.

Functions§

checked_encoded_len
Returns the encoded length, or None if it would overflow usize.
decoded_capacity
Returns the maximum decoded length for an encoded input length.
decoded_len
Returns the exact decoded length implied by input length and padding.
encoded_len
Returns the encoded length for an input length and padding policy.