Метод to_string_lossy
Метод to_string_lossy преобразует значение типа OsStr
в строку типа Cow<str>. Если данные содержат корректные
Unicode-последовательности, возвращается заимствованная строка без
выделения памяти. Если же встречаются некорректные байты, они
заменяются на символ замены U+FFFD, и возвращается
владеющая строка. Метод не принимает параметров.
Синтаксис
os_str.to_string_lossy()
Пример
Давайте преобразуем корректный OsStr в строку:
use std::ffi::OsStr;
fn main()
{
let os_str = OsStr::new("abcde");
let res = os_str.to_string_lossy();
println!("{}", res);
}
Результат выполнения кода:
"abcde"
Пример
Давайте преобразуем OsStr с некорректными байтами
в строку:
use std::ffi::OsStr;
use std::os::unix::ffi::OsStrExt;
fn main()
{
let bytes = [0x66, 0x6f, 0x80, 0x6f];
let os_str = OsStr::from_bytes(&bytes);
let res = os_str.to_string_lossy();
println!("{}", res);
}
Результат выполнения кода:
"fo\u{FFFD}o"
Пример
Давайте проверим, возвращает ли метод заимствованную строку для корректного Unicode:
use std::ffi::OsStr;
use std::borrow::Cow;
fn main()
{
let os_str = OsStr::new("12345");
let res = os_str.to_string_lossy();
let is_borrowed = matches!(res, Cow::Borrowed(_));
println!("{}", is_borrowed);
}
Результат выполнения кода:
true
Смотрите также
-
метод
to_str,
который пытается преобразовать OsStr в &str без потерь -
метод
from_utf8_lossy,
который преобразует байты в строку с заменой некорректных последовательностей -
метод
from_utf8,
который проверяет корректность UTF-8 при создании строки -
класс
OsStr,
который представляет заимствованную строку операционной системы