diff options
author | 2020-09-08 20:03:37 +0200 | |
---|---|---|
committer | 2020-09-08 20:03:37 +0200 | |
commit | 49076c6ac2983e2076dae64f68a2e801904d7ce9 (patch) | |
tree | 31c0cf2b8d166976dc819f020e0185f9d8c2bdcd /src/error.rs | |
parent | faa12382d4d7a44ab60fa5bf2a5024a34dbb2e8d (diff) | |
parent | c1f79b40cf704cafc807250b177fc7d3444fe54f (diff) | |
download | iced-49076c6ac2983e2076dae64f68a2e801904d7ce9.tar.gz iced-49076c6ac2983e2076dae64f68a2e801904d7ce9.tar.bz2 iced-49076c6ac2983e2076dae64f68a2e801904d7ce9.zip |
Merge pull request #514 from hecrj/feature/error-handling
Error propagation
Diffstat (limited to 'src/error.rs')
-rw-r--r-- | src/error.rs | 34 |
1 files changed, 34 insertions, 0 deletions
diff --git a/src/error.rs b/src/error.rs new file mode 100644 index 00000000..31b87d17 --- /dev/null +++ b/src/error.rs @@ -0,0 +1,34 @@ +use iced_futures::futures; + +/// An error that occurred while running an application. +#[derive(Debug, thiserror::Error)] +pub enum Error { + /// The futures executor could not be created. + #[error("the futures executor could not be created")] + ExecutorCreationFailed(futures::io::Error), + + /// The application window could not be created. + #[error("the application window could not be created")] + WindowCreationFailed(Box<dyn std::error::Error>), + + /// A suitable graphics adapter or device could not be found. + #[error("a suitable graphics adapter or device could not be found")] + GraphicsAdapterNotFound, +} + +#[cfg(not(target_arch = "wasm32"))] +impl From<iced_winit::Error> for Error { + fn from(error: iced_winit::Error) -> Error { + match error { + iced_winit::Error::ExecutorCreationFailed(error) => { + Error::ExecutorCreationFailed(error) + } + iced_winit::Error::WindowCreationFailed(error) => { + Error::WindowCreationFailed(Box::new(error)) + } + iced_winit::Error::GraphicsAdapterNotFound => { + Error::GraphicsAdapterNotFound + } + } + } +} |