diff options
| -rw-r--r-- | src/error.rs | 57 | ||||
| -rw-r--r-- | src/lib.rs | 57 | 
2 files changed, 60 insertions, 54 deletions
| diff --git a/src/error.rs b/src/error.rs new file mode 100644 index 0000000..6e32155 --- /dev/null +++ b/src/error.rs @@ -0,0 +1,57 @@ +// Copyright (C) 2019 Robin Krahl <robin.krahl@ireas.org> +// SPDX-License-Identifier: MIT + +use std::io; +use std::process; +use std::result; +use std::str; +use std::string; + +/// A result returned by `dialog`. +pub type Result<T> = result::Result<T, Error>; + +/// An error returned by `dialog`. +#[derive(Debug)] +pub enum Error { +    /// A general error with an error message. +    Error(String), +    /// An input or output error. +    IoError(io::Error), +    /// An UTF-8 error. +    Utf8Error(str::Utf8Error), +} + +impl From<&str> for Error { +    fn from(string: &str) -> Error { +        Error::Error(string.to_string()) +    } +} + +impl From<io::Error> for Error { +    fn from(error: io::Error) -> Error { +        Error::IoError(error) +    } +} + +impl From<str::Utf8Error> for Error { +    fn from(error: str::Utf8Error) -> Error { +        Error::Utf8Error(error) +    } +} + +impl From<string::FromUtf8Error> for Error { +    fn from(error: string::FromUtf8Error) -> Error { +        Error::Utf8Error(error.utf8_error()) +    } +} + +impl From<(&str, process::ExitStatus)> for Error { +    fn from(data: (&str, process::ExitStatus)) -> Error { +        let (command, status) = data; +        let msg = match status.code() { +            Some(code) => format!("Command {} failed with exit status {}", command, code), +            None => format!("Command {} was terminated by a signal", command), +        }; +        Error::Error(msg) +    } +} @@ -72,6 +72,8 @@  //! [`show`]: trait.DialogBox.html#method.show  //! [`show_with`]: trait.DialogBox.html#method.show_with +mod error; +  /// Backends that display dialog boxes.  ///  /// All backends implement the [`Backend`][] trait.  Some backends might provide additional @@ -81,60 +83,7 @@  /// [`Backend`]: trait.Backend.html  pub mod backends; -use std::io; -use std::process; -use std::result; -use std::str; -use std::string; - -/// A result returned by `dialog`. -pub type Result<T> = result::Result<T, Error>; - -/// An error returned by `dialog`. -#[derive(Debug)] -pub enum Error { -    /// A general error with an error message. -    Error(String), -    /// An input or output error. -    IoError(io::Error), -    /// An UTF-8 error. -    Utf8Error(str::Utf8Error), -} - -impl From<&str> for Error { -    fn from(string: &str) -> Error { -        Error::Error(string.to_string()) -    } -} - -impl From<io::Error> for Error { -    fn from(error: io::Error) -> Error { -        Error::IoError(error) -    } -} - -impl From<str::Utf8Error> for Error { -    fn from(error: str::Utf8Error) -> Error { -        Error::Utf8Error(error) -    } -} - -impl From<string::FromUtf8Error> for Error { -    fn from(error: string::FromUtf8Error) -> Error { -        Error::Utf8Error(error.utf8_error()) -    } -} - -impl From<(&str, process::ExitStatus)> for Error { -    fn from(data: (&str, process::ExitStatus)) -> Error { -        let (command, status) = data; -        let msg = match status.code() { -            Some(code) => format!("Command {} failed with exit status {}", command, code), -            None => format!("Command {} was terminated by a signal", command), -        }; -        Error::Error(msg) -    } -} +pub use crate::error::{Error, Result};  /// A dialog box that can be shown using a backend.  /// | 
