Класс OsStr
Класс OsStr представляет собой срез строки операционной
системы. Он используется для работы с платформенно-зависимыми
строками, которые могут содержать данные, не являющиеся
корректным UTF-8. OsStr чаще всего встречается как
заимствованная форма типа OsString и широко применяется
в функциях стандартной библиотеки, связанных с файловой
системой, переменными окружения и аргументами командной строки.
Основное преимущество OsStr перед str
заключается в том, что он способен хранить любые данные,
допустимые операционной системой, включая последовательности
байтов, которые не являются валидным UTF-8.
Синтаксис
// Создание среза OsStr из OsString
let os_str: &OsStr = os_string.as_os_str();
// Создание из строкового литерала
let os_str: &OsStr = OsStr::new("abcde");
Пример
Давайте создадим OsStr из строкового литерала
и выведем его длину в байтах:
use std::ffi::OsStr;
fn main()
{
let os_str = OsStr::new("abcde");
println!("{:?}", os_str);
println!("{}", os_str.len());
}
Результат выполнения кода:
"abcde"
5
Пример
Давайте создадим OsStr из OsString
и проверим, является ли он пустым:
use std::ffi::{OsStr, OsString};
fn main()
{
let os_string = OsString::from("12345");
let os_str: &OsStr = os_string.as_os_str();
println!("{}", os_str.is_empty());
println!("{}", os_str.len());
}
Результат выполнения кода:
false
5
Пример
Давайте преобразуем OsStr в обычную строку
str с помощью метода to_str:
use std::ffi::OsStr;
fn main()
{
let os_str = OsStr::new("abcde");
match os_str.to_str()
{
Some(s) => println!("{}", s),
None => println!("not valid UTF-8"),
}
}
Результат выполнения кода:
"abcde"
Смотрите также
-
метод
to_str,
который преобразует OsStr в обычную строку str -
метод
to_string_lossy,
который преобразует OsStr в String с заменой невалидных символов -
класс
String,
который представляет собой изменяемую UTF-8 строку -
метод
from,
который создаёт String из различных типов данных