Строки и срезы байтов научились делиться по позиции
18.05.2026У типа, представляющего путь как байты, появился метод деления строки на две части по заданной позиции. Прежний способ делил только по границам символов и требовал корректного текста.
Почему одного деления не хватало
Путь — это не обязательно текст. На системах, где имена файлов не обязаны быть в кодировке текста, путь хранится как последовательность байт. Метод деления для таких путей принимает позицию в байтах.
Но простое деление по байтам даёт части, которые могут разрезать символ многобайтовой кодировки. Что делать в таком случае, метод не сообщал — и вызывающий код был обязан справиться сам.
Что изменено
Метод возвращает две части или ничего, если позиция попала внутрь символа. То есть безопасный случай и невозможный различаются явно, и во втором случае результат не создаётся.
Проверка выполняется по границам кодировки независимо от платформы. Это снимает кроссплатформенную мину: на одной системе такой разрез прошёл бы, на другой — нет.
Где это нужно
Разбор путей, где известна позиция в байтах: форматы, хранящие длину имени перед ним, бинарные протоколы с путями внутри, собственные форматы данных.
Оригинал
implement OsStr::split_at
Упоминаний: 1 · Просмотров: 6