mirror of
https://github.com/italicsjenga/winit-sonoma-fix.git
synced 2024-12-25 14:51:30 +11:00
87 lines
2.1 KiB
Rust
87 lines
2.1 KiB
Rust
|
use std::fmt;
|
||
|
use std::error;
|
||
|
|
||
|
use platform_impl;
|
||
|
|
||
|
/// An error whose cause it outside Winit's control.
|
||
|
#[derive(Debug)]
|
||
|
pub enum ExternalError {
|
||
|
/// The operation is not supported by the backend.
|
||
|
NotSupported(NotSupportedError),
|
||
|
/// The OS cannot perform the operation.
|
||
|
Os(OsError),
|
||
|
}
|
||
|
|
||
|
/// The error type for when the requested operation is not supported by the backend.
|
||
|
#[derive(Clone)]
|
||
|
pub struct NotSupportedError {
|
||
|
_marker: (),
|
||
|
}
|
||
|
|
||
|
/// The error type for when the OS cannot perform the requested operation.
|
||
|
#[derive(Debug)]
|
||
|
pub struct OsError {
|
||
|
line: u32,
|
||
|
file: &'static str,
|
||
|
error: platform_impl::OsError,
|
||
|
}
|
||
|
|
||
|
impl NotSupportedError {
|
||
|
#[inline]
|
||
|
#[allow(dead_code)]
|
||
|
pub(crate) fn new() -> NotSupportedError {
|
||
|
NotSupportedError {
|
||
|
_marker: ()
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
impl OsError {
|
||
|
#[allow(dead_code)]
|
||
|
pub(crate) fn new(line: u32, file: &'static str, error: platform_impl::OsError) -> OsError {
|
||
|
OsError {
|
||
|
line,
|
||
|
file,
|
||
|
error,
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
#[allow(unused_macros)]
|
||
|
macro_rules! os_error {
|
||
|
($error:expr) => {{
|
||
|
crate::error::OsError::new(line!(), file!(), $error)
|
||
|
}}
|
||
|
}
|
||
|
|
||
|
impl fmt::Display for OsError {
|
||
|
fn fmt(&self, formatter: &mut fmt::Formatter) -> Result<(), fmt::Error> {
|
||
|
formatter.pad(&format!("os error at {}:{}: {}", self.file, self.line, self.error))
|
||
|
}
|
||
|
}
|
||
|
|
||
|
impl fmt::Display for ExternalError {
|
||
|
fn fmt(&self, formatter: &mut fmt::Formatter) -> Result<(), fmt::Error> {
|
||
|
match self {
|
||
|
ExternalError::NotSupported(e) => e.fmt(formatter),
|
||
|
ExternalError::Os(e) => e.fmt(formatter),
|
||
|
}
|
||
|
}
|
||
|
}
|
||
|
|
||
|
impl fmt::Debug for NotSupportedError {
|
||
|
fn fmt(&self, formatter: &mut fmt::Formatter) -> Result<(), fmt::Error> {
|
||
|
formatter.debug_struct("NotSupportedError").finish()
|
||
|
}
|
||
|
}
|
||
|
|
||
|
impl fmt::Display for NotSupportedError {
|
||
|
fn fmt(&self, formatter: &mut fmt::Formatter) -> Result<(), fmt::Error> {
|
||
|
formatter.pad("the requested operation is not supported by Winit")
|
||
|
}
|
||
|
}
|
||
|
|
||
|
impl error::Error for OsError {}
|
||
|
impl error::Error for ExternalError {}
|
||
|
impl error::Error for NotSupportedError {}
|