Function bczhc_lib::utf8::decode_utf8_with_length
source · pub fn decode_utf8_with_length(
bytes: &[u8],
bytes_length: u32
) -> SolvedUtf8PropertiesExpand 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);