pub fn decode<T: AsRef<[u8]>>(encoded: T) -> Result<Vec<u8>, DecodeError>
Expand description
Decode Bubble Babble-encoded byte slice to a Vec<u8>
.
§Examples
assert_eq!(boba::decode("xexax")?, vec![]);
assert_eq!(boba::decode("xesef-disof-gytuf-katof-movif-baxux")?, b"1234567890");
assert_eq!(boba::decode("xigak-nyryk-humil-bosek-sonax")?, b"Pineapple");
§Errors
Decoding is fallible and might return DecodeError
if:
- The input is not an ASCII string.
- The input contains an ASCII character outside of the Bubble Babble encoding alphabet.
- The input does not start with a leading
x
. - The input does not end with a trailing
x
. - The decoded result does not checksum properly.
assert_eq!(boba::decode("x💎🦀x"), Err(DecodeError::InvalidByte(1)));
assert_eq!(boba::decode("x789x"), Err(DecodeError::InvalidByte(1)));
assert_eq!(boba::decode("yx"), Err(DecodeError::MalformedHeader));
assert_eq!(boba::decode("xy"), Err(DecodeError::MalformedTrailer));
assert_eq!(boba::decode(""), Err(DecodeError::Corrupted));
assert_eq!(boba::decode("z"), Err(DecodeError::Corrupted));
assert_eq!(boba::decode("xx"), Err(DecodeError::Corrupted));