rss2email_lib/email/
error.rs1use std::fmt::Display;
2
3#[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}