Метод to_str
Метод to_str пытается преобразовать значение типа OsStr в обычный строковый срез &str.
Он проверяет, является ли содержимое валидной последовательностью UTF-8.
Если данные корректны, метод возвращает Some(&str), а в случае ошибки - None.
Метод не принимает параметров и возвращает значение типа Option<&str>.
Синтаксис
os_str.to_str()
Пример
Давайте создадим OsStr из валидной строки и попробуем преобразовать её обратно в str:
use std::ffi::OsStr;
fn main()
{
let os_str = OsStr::new("abcde");
let res = os_str.to_str();
println!("{:?}", res);
}
Результат выполнения кода:
Some("abcde")
Пример
Теперь рассмотрим ситуацию, когда OsStr содержит невалидные для UTF-8 данные.
Для этого создадим его из байтового вектора:
use std::ffi::OsStr;
use std::os::unix::ffi::OsStrExt;
fn main()
{
let bytes = vec![0x66, 0x6f, 0x80, 0x6f];
let os_str = OsStr::from_bytes(&bytes);
let res = os_str.to_str();
println!("{:?}", res);
}
Результат выполнения кода:
None
Смотрите также
-
метод
to_string_lossy,
который преобразует OsStr в строку с заменой невалидных символов -
метод
OsStr,
который представляет собой срез операционной системы -
метод
from_utf8,
который создает String из байтового вектора с проверкой UTF-8 -
метод
from_utf8_lossy,
который создает строку из байтов, заменяя ошибки