Цитирование из документов для String::from_utf8_lossy
Эта функция возвращает Cow<'a, str>
. Если наш фрагмент байта недопустим в формате UTF-8, то нам нужно вставить заменяющие символы, что изменит размер строки и, следовательно, потребует String
. Но если это уже UTF-8, нам не нужно новое распределение. Этот тип возврата позволяет нам обрабатывать оба случая.
Таким образом, он не возвращает &str
, а скорее Cow<str>
, а выделяет только при необходимости замену недопустимых байтов на «�».
В общем, если функция действительно возвращает &str
, то &str
не будет (заново) выделяться. Он будет либо stati c (встроен в сам двоичный файл), либо будет иметь время жизни, полученное из некоторого аргумента функции (например, String::trim
).