1use std::{
4 error::Error as StdError,
5 fmt::{self, Display, Formatter},
6};
7
8#[derive(Debug)]
11pub enum Error {
12 MissingFrom,
14 MissingTo,
16 TooManyFrom,
18 EmailMissingAt,
20 EmailMissingLocalPart,
22 EmailMissingDomain,
24 CannotParseFilename,
26 Io(std::io::Error),
28 NonAsciiChars,
30}
31
32impl Display for Error {
33 fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), fmt::Error> {
34 match self {
35 Error::MissingFrom => f.write_str("missing source address, invalid envelope"),
36 Error::MissingTo => f.write_str("missing destination address, invalid envelope"),
37 Error::TooManyFrom => f.write_str("there can only be one source address"),
38 Error::EmailMissingAt => f.write_str("missing @ in email address"),
39 Error::EmailMissingLocalPart => f.write_str("missing local part in email address"),
40 Error::EmailMissingDomain => f.write_str("missing domain in email address"),
41 Error::CannotParseFilename => f.write_str("could not parse attachment filename"),
42 Error::NonAsciiChars => f.write_str("contains non-ASCII chars"),
43 Error::Io(e) => e.fmt(f),
44 }
45 }
46}
47
48impl From<std::io::Error> for Error {
49 fn from(err: std::io::Error) -> Error {
50 Error::Io(err)
51 }
52}
53
54impl StdError for Error {}