use crate::rng::ALPHANUMERIC;
pub unsafe trait Encoder {
const CHARSET: &[u8];
const MIN_LEN: usize;
}
pub struct Base64;
unsafe impl Encoder for Base64 {
const CHARSET: &[u8] = b"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
const MIN_LEN: usize = 22;
}
pub struct Base64Url;
unsafe impl Encoder for Base64Url {
const CHARSET: &[u8] = b"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789-_";
const MIN_LEN: usize = 22;
}
pub struct Base62;
unsafe impl Encoder for Base62 {
const CHARSET: &[u8] = ALPHANUMERIC;
const MIN_LEN: usize = 22;
}
pub struct Base32;
unsafe impl Encoder for Base32 {
const CHARSET: &[u8] = b"ABCDEFGHIJKLMNOPQRSTUVWXYZ234567";
const MIN_LEN: usize = 26;
}
pub struct Base32Hex;
unsafe impl Encoder for Base32Hex {
const CHARSET: &[u8] = b"0123456789ABCDEFGHIJKLMNOPQRSTUV";
const MIN_LEN: usize = 26;
}
pub struct Base16;
unsafe impl Encoder for Base16 {
const CHARSET: &[u8] = b"0123456789ABCDEF";
const MIN_LEN: usize = 32;
}