pub struct Alphabet {
pub(crate) symbols: [u8; 64],
pub(crate) padding: Symbol,
}Expand description
An alphabet defines the 64 ASCII characters (symbols) used for base64.
Common alphabets are provided as constants, and custom alphabets
can be made via from_str or the TryFrom<str> implementation.
§Examples
Building and using a custom Alphabet:
let custom = base64::alphabet::Alphabet::new("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/").unwrap();
let engine = base64::engine::GeneralPurpose::new(
&custom,
base64::engine::general_purpose::PAD);Building a const:
use base64::alphabet::Alphabet;
static CUSTOM: Alphabet = {
// Result::unwrap() isn't const yet, but panic!() is OK
match Alphabet::new("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/") {
Ok(x) => x,
Err(_) => panic!("creation of alphabet failed"),
}
};Building lazily:
use base64::alphabet::Alphabet;
use std::sync::LazyLock;
static CUSTOM: LazyLock<Alphabet> = LazyLock::new(||
Alphabet::new("ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/").unwrap()
);Fields§
§symbols: [u8; 64]All bytes are valid symbols, but left as u8 to allow .as_str() to work.
padding: SymbolImplementations§
Source§impl Alphabet
impl Alphabet
Sourceconst fn from_str_unchecked(alphabet: &str, padding: Symbol) -> Self
const fn from_str_unchecked(alphabet: &str, padding: Symbol) -> Self
Performs no checks so that it can be const. Used only for known-valid strings.
Sourcepub const fn new(alphabet: &str) -> Result<Self, ParseAlphabetError>
pub const fn new(alphabet: &str) -> Result<Self, ParseAlphabetError>
Create an Alphabet from a string of 64 unique printable ASCII bytes with = as the
padding symbol.
The padding symbol = is not allowed in the alphabet.
See Self::new_with_padding if a non-default padding symbol is needed.
Sourcepub const fn new_with_padding(
alphabet: &str,
padding: Symbol,
) -> Result<Self, ParseAlphabetError>
pub const fn new_with_padding( alphabet: &str, padding: Symbol, ) -> Result<Self, ParseAlphabetError>
Create an Alphabet from a string of 64 unique printable ASCII bytes, with a custom
padding symbol.
The padding symbol must not appear in the alphabet.
This is meant for strange alphabets that don’t use = as the padding symbol.