diff --git a/src/error.rs b/src/error.rs new file mode 100644 index 00000000..1d46aabb --- /dev/null +++ b/src/error.rs @@ -0,0 +1,47 @@ +use crate::comms::BusMessage; +use thiserror::Error; + +#[derive(Error, Debug)] +pub enum Error { + #[error("Error broadcasting: {0}")] + BroadcastSend(#[from] tokio::sync::broadcast::error::SendError), + + #[error("Error receiving broadcast: {0}")] + BroadcastReceive(#[from] tokio::sync::broadcast::error::RecvError), + + #[error("Error: {0}")] + General(String), + + #[error("Task join error: {0}")] + JoinError(#[from] tokio::task::JoinError), + + #[error("Error sending mpsc: {0}")] + MpscSend(#[from] tokio::sync::mpsc::error::SendError), + + #[error("Nostr: {0}")] + Nostr(#[from] nostr_proto::Error), + + #[error("I/O Error: {0}")] + Io(#[from] std::io::Error), + + #[error("Bad integer: {0}")] + ParseInt(#[from] std::num::ParseIntError), + + #[error("SerdeJson Error: {0}")] + SerdeJson(#[from] serde_json::Error), + + #[error("SQL: {0}")] + Sql(#[from] rusqlite::Error), +} + +impl From for Error { + fn from(s: String) -> Error { + Error::General(s) + } +} + +impl From<&str> for Error { + fn from(s: &str) -> Error { + Error::General(s.to_string()) + } +} diff --git a/src/main.rs b/src/main.rs index 4fbd83fc..46e8166a 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,4 +1,5 @@ mod comms; +mod error; fn main() { tracing_subscriber::fmt::init();