РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
180 of 1245 menu

Функция 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,
    который создает строку из различных типов данных
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить