pub fn decode_utf8_with_length(
    bytes: &[u8],
    bytes_length: u32
) -> SolvedUtf8Properties
Expand description

Decode UTF-8 with a given length

Notice the given length must be the result of utf8_bytes_length

Examples

use bczhc_lib::utf8::{utf8_bytes_length, decode_utf8_with_length};

let b = "a".as_bytes();
let length = utf8_bytes_length(b[0]);
assert_eq!(length, 1);
let solved = decode_utf8_with_length(&b, length);
assert_eq!(solved.codepoint, 'a' as u32);
assert_eq!(solved.bytes_length, 1);

let b = "©".as_bytes();
let length = utf8_bytes_length(b[0]);
assert_eq!(length, 2);
let solved = decode_utf8_with_length(&b, length);
assert_eq!(solved.codepoint, '©' as u32);
assert_eq!(solved.bytes_length, 2);

let b = "好".as_bytes();
let length = utf8_bytes_length(b[0]);
assert_eq!(length, 3);
let solved = decode_utf8_with_length(&b, length);
assert_eq!(solved.codepoint, '好' as u32);
assert_eq!(solved.bytes_length, 3);

let b = "🍎".as_bytes();
let length = utf8_bytes_length(b[0]);
assert_eq!(length, 4);
let solved = decode_utf8_with_length(&b, length);
assert_eq!(solved.codepoint, '🍎' as u32);
assert_eq!(solved.bytes_length, 4);