Функция last_os_error
Функция last_os_error класса io::Error создает и возвращает экземпляр ошибки ввода-вывода, основываясь на коде ошибки, полученном от операционной системы. Она не принимает никаких параметров. Эта функция полезна для преобразования кодов ошибок системных вызовов (например, возвращаемых функциями C или системными API) в тип io::Error, который удобно обрабатывать средствами стандартной библиотеки Rust.
Синтаксис
std::io::Error::last_os_error()
Пример
Давайте создадим ошибку на основе последнего системного вызова. Для этого выполним операцию, которая гарантированно вызовет ошибку, например, попытаемся открыть несуществующий файл, а затем получим ошибку ОС:
use std::fs::File;
use std::io::Error;
fn main()
{
// Attempt to open a non-existent file to trigger a system error
let _ = File::open("non_existent_file.txt");
// Retrieve the last OS error
let err = Error::last_os_error();
println!("Error: {}", err);
}
Результат выполнения кода (примерный):
Error: No such file or directory (os error 2)
Пример
Давайте рассмотрим, как можно использовать эту функцию для обработки кода ошибки, полученного от системного вызова, и вывода только её числового кода:
use std::io::Error;
fn main()
{
// Simulating an OS error by getting the last one
// In a real scenario, this might come after a failed syscall
let err = Error::last_os_error();
// Check if there is a raw OS error code
if let Some(code) = err.raw_os_error() {
println!("OS Error Code: {}", code);
} else {
println!("No OS error code available.");
}
}
Результат выполнения кода (примерный):
OS Error Code: 0