Function boba::decode

source ·
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));