Function const_base::decode
source · pub const fn decode<const OUT: usize>(
input: &[u8],
config: Config
) -> Result<[u8; OUT], DecodeError>
Expand description
Decodes input
into a [u8; OUT]
with the encoding determined by config
.
Errors
This function returns these errors:
-
DecodeError::InvalidByte
: When one of the bytes isn’t in the char set for that encoding. -
DecodeError::WrongOutputLength
: WhenOUT
doesn’t equaldecoded_len(input, config)
. -
DecodeError::WrongInputLength
: Wheninput.len()
is not a valid length for that encoding.
Example
Base 64
use const_base::{Config, DecodeError, decode};
{
const OUT: [u8; 5] = DecodeError::unwrap(decode(b"cm9ja28=", Config::B64));
assert_eq!(OUT, *b"rocko");
}
{
const OUT: Result<[u8; 4], DecodeError> =
decode(b"bGlmZQ", Config::B64.end_padding(false));
assert_eq!(OUT, Ok(*b"life"));
}
{
const DECODED_A: Result<[u8; 4], DecodeError> = decode(b"bGl!ZQ", Config::B64);
const DECODED_B: Result<[u8; 8], DecodeError> = decode(b"AAAAAA", Config::B64);
const DECODED_C: Result<[u8; 6], DecodeError> = decode(b"AAAAA", Config::B64);
assert!(matches!(DECODED_A, Err(DecodeError::InvalidByte(_))));
assert!(matches!(DECODED_B, Err(DecodeError::WrongOutputLength(_))));
assert!(matches!(DECODED_C, Err(DecodeError::WrongInputLength(_))));
}
Base 32
use const_base::{ArrayStr, Config, DecodeError, decode};
{
const OUT: [u8; 3] = DecodeError::unwrap(decode(b"MNQXI===", Config::B32));
assert_eq!(OUT, *b"cat");
}
{
const OUT: [u8; 3] =
DecodeError::unwrap(decode(b"MNQXI", Config::B32.end_padding(false)));
assert_eq!(OUT, *b"cat");
}
Hexadecimal
use const_base::{Config, DecodeError, decode};
const OUT: [u8; 4] = DecodeError::unwrap(decode(b"f09f918d", Config::HEX));
assert_eq!(OUT, "👍".as_bytes());