rss2email_lib/email/
error.rs

1use std::fmt::Display;
2
3/// Represents all things that could go wrong
4/// while trying to send an email.
5#[derive(Debug)]
6#[allow(dead_code)]
7pub enum EmailError {
8  Config(String),
9  Request(reqwest::Error),
10  Io(String),
11  Other(String),
12}
13
14impl From<reqwest::Error> for EmailError {
15  fn from(e: reqwest::Error) -> Self {
16    Self::Request(e)
17  }
18}
19
20impl From<resend_rs::Error> for EmailError {
21  fn from(value: resend_rs::Error) -> Self {
22    match value {
23      resend_rs::Error::Http(e) => Self::from(e),
24      resend_rs::Error::Resend(e) => Self::Other(e.to_string()),
25      resend_rs::Error::Parse(e) => Self::Other(e),
26      resend_rs::Error::RateLimit {
27        ratelimit_limit: _,
28        ratelimit_remaining: _,
29        ratelimit_reset: _,
30      } => Self::Other(value.to_string()),
31    }
32  }
33}
34
35impl Display for EmailError {
36  fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
37    match &self {
38      Self::Request(e) => write!(f, "{e}"),
39      Self::Config(e) | Self::Io(e) | Self::Other(e) => write!(f, "{e}"),
40    }
41  }
42}