Структура Utf8Chunk

#![allow(unused)]
fn main() {
pub struct Utf8Chunk<'a> { /* приватные поля */ }
}

Элемент, возвращаемый итератором Utf8Chunks.

Utf8Chunk хранит последовательность байтов u8 до первого поврежденного символа при декодировании UTF-8 строки.

Примеры

#![allow(unused)]
fn main() {
// Неверная UTF-8 строка
let bytes = b"foo\xF1\x80bar";

// Декодируем первый `Utf8Chunk`
let chunk = bytes.utf8_chunks().next().unwrap();

// Первые три символа - валидные UTF-8
assert_eq!("foo", chunk.valid());

// Четвертый символ поврежден
assert_eq!(b"\xF1\x80", chunk.invalid());
}

Реализации трейтов

impl<'a> Utf8Chunk<'a>

ФункцияСинтаксисПримерНазначение
validpub fn valid(&self) -> &'a strlet valid_part = chunk.valid();Возвращает следующую валидную UTF-8 подстроку. Эта подстрока может быть пустой в начале строки или между поврежденными UTF-8 символами
invalidpub fn invalid(&self) -> &'a [u8] ⓘlet invalid_bytes = chunk.invalid();Возвращает невалидную последовательность, которая вызвала ошибку. Возвращаемый срез будет иметь максимальную длину 3 и начинается после подстроки, заданной valid. Декодирование продолжится после этой последовательности. Если пусто, это последний чанк в строке. Если не пусто, встретился неожиданный байт или неожиданно достигнут конец ввода. Потерянное декодирование заменит эту последовательность на U+FFFD REPLACEMENT CHARACTER

impl<'a> Clone for Utf8Chunk<'a>

ФункцияСинтаксисПримерНазначение
clonefn clone(&self) -> Utf8Chunk<'a>let cloned_chunk = chunk.clone();Возвращает копию значения
clone_fromfn clone_from(&mut self, source: &Self)chunk.clone_from(&other_chunk);Выполняет копирующее присваивание из source

impl<'a> Debug for Utf8Chunk<'a>

ФункцияСинтаксисПримерНазначение
fmtfn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>println!("{:?}", chunk);Форматирует значение с помощью заданного форматтера

impl<'a> PartialEq for Utf8Chunk<'a>

ФункцияСинтаксисПримерНазначение
eqfn eq(&self, other: &Utf8Chunk<'a>) -> boolif chunk1 == chunk2 { ... }Проверяет равенство значений self и other, используется оператором ==
nefn ne(&self, other: &Rhs) -> boolif chunk1 != chunk2 { ... }Проверяет неравенство. Реализация по умолчанию почти всегда достаточна и не должна переопределяться без очень веской причины

impl<'a> Eq for Utf8Chunk<'a>

Этот трейт не имеет методов, но указывает, что тип реализует отношение эквивалентности (рефлексивность, симметричность, транзитивность)

impl<'a> StructuralPartialEq for Utf8Chunk<'a>

Этот трейт не имеет методов и используется для указания структурного равенства в макросах