b32_rs/src/lib.rs
2025-01-12 18:32:36 -05:00

42 lines
972 B
Rust

#[warn(clippy::all, clippy::pedantic)]
pub mod decode;
pub mod encode;
pub mod error;
pub use {decode::Decoder, encode::Encoder, error::Error as B64Error};
#[derive(Clone, Copy)]
pub struct B32Alphabet {
items: [u8; 32],
pad: Option<u8>,
}
pub static B32_RFC4648_ALPHABET: B32Alphabet = B32Alphabet {
items: [
b'A', b'B', b'C', b'D', b'E', b'F', b'G', b'H', b'I', b'J', b'K', b'L', b'M', b'N', b'O',
b'P', b'Q', b'R', b'S', b'T', b'U', b'V', b'W', b'X', b'Y', b'Z', b'2', b'3', b'4', b'5',
b'6', b'7',
],
pad: Some(b'='),
};
impl Default for B32Alphabet {
fn default() -> Self {
B32_RFC4648_ALPHABET
}
}
impl B32Alphabet {
pub(crate) fn idx(&self, c: u8) -> Option<usize> {
for (idx, x) in self.items.iter().enumerate() {
if *x == c {
return Some(idx);
}
}
None
}
pub(crate) fn pad(&self) -> Option<u8> {
self.pad
}
}