Строки и срезы байтов научились делиться по позиции

18.05.2026

У типа, представляющего путь как байты, появился метод деления строки на две части по заданной позиции. Прежний способ делил только по границам символов и требовал корректного текста.

Почему одного деления не хватало

Путь — это не обязательно текст. На системах, где имена файлов не обязаны быть в кодировке текста, путь хранится как последовательность байт. Метод деления для таких путей принимает позицию в байтах.

Но простое деление по байтам даёт части, которые могут разрезать символ многобайтовой кодировки. Что делать в таком случае, метод не сообщал — и вызывающий код был обязан справиться сам.

Что изменено

Метод возвращает две части или ничего, если позиция попала внутрь символа. То есть безопасный случай и невозможный различаются явно, и во втором случае результат не создаётся.

Проверка выполняется по границам кодировки независимо от платформы. Это снимает кроссплатформенную мину: на одной системе такой разрез прошёл бы, на другой — нет.

Где это нужно

Разбор путей, где известна позиция в байтах: форматы, хранящие длину имени перед ним, бинарные протоколы с путями внутри, собственные форматы данных.

Оригинал

implement OsStr::split_at

Упоминаний: 1 · Просмотров: 6