[][src]Function rut::decode_one

pub fn decode_one(bytes: &[u8]) -> (Result<char, Error>, &[u8])

Decodes one character from a byte slice, returning a Result and the remainder of the slice.

Panics

Panics if bytes is empty.

Examples

// Valid UTF-8 encoding of '€'
let bytes = [0xE2, 0x82, 0xAC];

let (result, rest) = rut::decode_one(&bytes);

assert_eq!(result, Ok('€'));
assert_eq!(rest, &[]);
use rut::Error::*;

// Ill-formed sequence followed by 2 valid characters
let bytes = [0xC2, 0x41, 0x42];

let (result1, rest1) = rut::decode_one(&bytes);
let (result2, rest2) = rut::decode_one(rest1);
let (result3, rest3) = rut::decode_one(rest2);

assert_eq!(result1, Err(BrokenSequence));
assert_eq!(result2, Ok('A'));
assert_eq!(result3, Ok('B'));
assert_eq!(rest1, &[0x41, 0x42]);
assert_eq!(rest2, &[0x42]);
assert_eq!(rest3, &[]);