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§
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§
- Decode
Error - Decoding error.
- Encode
Error - 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
Noneif it would overflowusize. - 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.