Функция from_utf8
Функция from_utf8 преобразует срез байтов
в тип String. Параметром функция принимает
срез байтов &[u8], который должен быть
корректной последовательностью UTF-8. Возвращает
результат типа Result<String, FromUtf8Error>:
если байты валидны, возвращается Ok(String),
иначе - Err с информацией об ошибке.
Синтаксис
String::from_utf8(vec: Vec<u8>) -> Result<String, FromUtf8Error>
Пример
Давайте создадим строку из вектора байтов, представляющего корректную последовательность UTF-8:
fn main()
{
let bytes = vec![97, 98, 99, 100, 101];
let res = String::from_utf8(bytes);
println!("{:?}", res);
}
Результат выполнения кода:
Ok("abcde")
Пример
Давайте попробуем создать строку из байтов, которые не являются корректной последовательностью UTF-8:
fn main()
{
let bytes = vec![0xFF, 0xFE, 0xFD];
let res = String::from_utf8(bytes);
println!("{:?}", res);
}
Результат выполнения кода:
Err(FromUtf8Error { bytes: [255, 254, 253], error: Utf8Error { valid_up_to: 0, error_len: Some(1) } })
Пример
Давайте обработаем результат с помощью match
для получения строки или сообщения об ошибке:
fn main()
{
let bytes = vec![49, 50, 51, 52, 53];
let res = match String::from_utf8(bytes)
{
Ok(s) => s,
Err(e) => format!("error: {}", e),
};
println!("{}", res);
}
Результат выполнения кода:
"12345"
Смотрите также
-
метод
from_utf8_lossy,
который создает строку из байтов, заменяя некорректные символы -
метод
from_utf8_unchecked,
который создает строку из байтов без проверки корректности -
метод
into_bytes,
который преобразует строку в вектор байтов -
метод
from,
который создает строку из различных типов данных