//! # Error module for [`pt-log`](crate) //! //! This module handles errors in logging contexts. //// ATTRIBUTES //////////////////////////////////////////////////////////////////////////////////// // we want docs #![warn(missing_docs)] #![warn(rustdoc::missing_crate_level_docs)] // we want Debug everywhere. #![warn(missing_debug_implementations)] // enable clippy's extra lints, the pedantic version #![warn(clippy::pedantic)] //// IMPORTS /////////////////////////////////////////////////////////////////////////////////////// use tracing::subscriber::SetGlobalDefaultError; use anyhow; use thiserror::Error; //// TYPES ///////////////////////////////////////////////////////////////////////////////////////// //// CONSTANTS ///////////////////////////////////////////////////////////////////////////////////// //// STATICS /////////////////////////////////////////////////////////////////////////////////////// //// MACROS //////////////////////////////////////////////////////////////////////////////////////// //// ENUMS ///////////////////////////////////////////////////////////////////////////////////////// /// ## Errors for the [Logger](super::Logger) #[derive(Error)] pub enum Error { /// Bad IO operation #[error("Bad IO operation")] IO(std::io::Error), /// Various errors raised when the messenger is used in a wrong way #[error("Bad usage")] Usage(String), /// Could not assign logger as the global default #[error("Could not assign as global default")] // TODO: make this more clear SetGlobalDefaultFail(SetGlobalDefaultError), } //// STRUCTS /////////////////////////////////////////////////////////////////////////////////////// //// IMPLEMENTATION //////////////////////////////////////////////////////////////////////////////// impl From for Error { fn from(value: std::io::Error) -> Self { Error::IO(value) } } //////////////////////////////////////////////////////////////////////////////////////////////////// impl From for Error { fn from(value: SetGlobalDefaultError) -> Self { Error::SetGlobalDefaultFail(value) } } //////////////////////////////////////////////////////////////////////////////////////////////////// impl std::fmt::Debug for Error { fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result { match self { Error::IO(e) => write!(f, ""), Error::Usage(e) => write!(f, ""), Error::SetGlobalDefaultFail(e) => write!(f, ""), } } } //// PUBLIC FUNCTIONS ////////////////////////////////////////////////////////////////////////////// //// PRIVATE FUNCTIONS /////////////////////////////////////////////////////////////////////////////