Propagate error from EventLoop creation

Inner panics could make it hard to trouble shoot the issues and for some
users ints not desirable.

The inner panics were left only when they are used to `assert!` during
development.
This commit is contained in:
Kirill Chibisov 2023-08-06 06:03:54 +04:00 committed by GitHub
parent 584aab4cd0
commit ed26dd58fd
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
57 changed files with 344 additions and 291 deletions

View file

@ -30,7 +30,7 @@ pub struct OsError {
/// A general error that may occur while running the Winit event loop
#[derive(Debug)]
pub enum RunLoopError {
pub enum EventLoopError {
/// The operation is not supported by the backend.
NotSupported(NotSupportedError),
/// The OS cannot perform the operation.
@ -41,6 +41,12 @@ pub enum RunLoopError {
ExitFailure(i32),
}
impl From<OsError> for EventLoopError {
fn from(value: OsError) -> Self {
Self::Os(value)
}
}
impl NotSupportedError {
#[inline]
#[allow(dead_code)]
@ -94,13 +100,13 @@ impl fmt::Display for NotSupportedError {
}
}
impl fmt::Display for RunLoopError {
impl fmt::Display for EventLoopError {
fn fmt(&self, f: &mut fmt::Formatter<'_>) -> Result<(), fmt::Error> {
match self {
RunLoopError::AlreadyRunning => write!(f, "EventLoop is already running"),
RunLoopError::NotSupported(e) => e.fmt(f),
RunLoopError::Os(e) => e.fmt(f),
RunLoopError::ExitFailure(status) => write!(f, "Exit Failure: {status}"),
EventLoopError::AlreadyRunning => write!(f, "EventLoop is already running"),
EventLoopError::NotSupported(e) => e.fmt(f),
EventLoopError::Os(e) => e.fmt(f),
EventLoopError::ExitFailure(status) => write!(f, "Exit Failure: {status}"),
}
}
}
@ -108,7 +114,7 @@ impl fmt::Display for RunLoopError {
impl error::Error for OsError {}
impl error::Error for ExternalError {}
impl error::Error for NotSupportedError {}
impl error::Error for RunLoopError {}
impl error::Error for EventLoopError {}
#[cfg(test)]
mod tests {