Дмитрий Беляев, да я видел это описание до вашего примера, но у меня не работало. с типами плохо знаком. возможно вывести один символ не так
for c in decode_utf16(0x0901..=0x0901) {
println!("{}", c.unwrap());
}
а по-другому? чтобы присвоить какой нибудь переменной значение одного символа, другой переменной другого символа, а потом "склеивать" из нескольких символов "графемы". у меня задача перебрать различные комбинации символов индийского алфавита и посмотреть где ломается шрифт..
eegmak, decode_utf16 принимает на вход итератор u16 и возвращает итератор по Result<char, DecodeUtf16Error>, ошибка будет при некорректной суррогатной паре (если таких нет, можно смело unwrap'нуть Result)
По другому с utf16 работать нельзя, по крайней мере средствами стандартной библиотеки
use std::char::decode_utf16;
use std::ops::RangeInclusive;
fn as_range(n: u16) -> RangeInclusive<u16> { n..=n }
let c = decode_utf16(as_range(0x0900)).next().unwrap().unwrap();
println!("{}", c);