Метод to_string_lossy
Метод to_string_lossy преобразует путь
в строку типа Cow<str>. Если путь содержит
корректные UTF-8 последовательности, возвращается
заимствованная строка без копирования. Если же
в пути есть некорректные байты, они заменяются
на символ замены U+FFFD, и создаётся
новая строка. Параметров метод не принимает.
Синтаксис
path.to_string_lossy()
Пример
Давайте преобразуем обычный путь в строку:
use std::path::Path;
fn main()
{
let path = Path::new("/home/user/abcde.txt");
let res = path.to_string_lossy();
println!("{}", res);
}
Результат выполнения кода:
"/home/user/abcde.txt"
Пример
Давайте преобразуем относительный путь:
use std::path::Path;
fn main()
{
let path = Path::new("12345/abcde");
let res = path.to_string_lossy();
println!("{}", res);
}
Результат выполнения кода:
"12345/abcde"
Пример
Давайте преобразуем путь с некорректными
UTF-8 байтами. На Unix-системах можно
создать такой путь через OsStr:
use std::path::Path;
use std::os::unix::ffi::OsStrExt;
use std::ffi::OsStr;
fn main()
{
let bytes = b"abcde\xFF\xFE.txt";
let os_str = OsStr::from_bytes(bytes);
let path = Path::new(os_str);
let res = path.to_string_lossy();
println!("{}", res);
}
Результат выполнения кода:
"abcde��.txt"
Смотрите также
-
метод
to_str,
который преобразует путь в Option<&str> без потери данных -
метод
display,
который возвращает тип для форматированного вывода пути -
метод
as_os_str,
который возвращает ссылку на OsStr -
метод
to_path_buf,
который создаёт собственную копию пути