[][src]Function rut::parse_one

pub fn parse_one<'a>(
    bytes: &'a [u8]
) -> (Result<char, Utf8ParseError>, &'a [u8])

Parses one UTF-8 sequence from a byte slice, returning a Result and the unparsed 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::parse_one(&bytes);
 
assert_eq!(result, Ok('€'));
assert_eq!(rest, &[]);
use rut::Utf8ParseError::*;
 
// Ill-formed sequence followed by 2 valid characters
let bytes = [0xC2, 0x41, 0x42];
 
let (result1, rest1) = rut::parse_one(&bytes);
let (result2, rest2) = rut::parse_one(rest1);
let (result3, rest3) = rut::parse_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, &[]);