Строку можно заменить на месте такой же длины

27.07.2026

У типа строки появился метод копирования в неё значения той же длины. Это аналог уже существующего метода для срезов.

Почему это отдельная операция

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

Обмен по месту возможен только при совпадении длин. И это гарантирует корректность: замена строки строкой той же длины не может разрезать многобайтовый символ, потому что границы символов в обеих строках совпадают по позициям.

Что проверяется

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

Полезность в коде, который работает с большими строками: перезапись на месте без выделения памяти.

Оригинал

implement str::copy_from_str

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