macro_rules! map_error {
($this:expr) => {{
let log_prefix = &$this.log_prefix;
let selected = $this.selected.as_ref();
move |e| {
let selected_ok = selected.map_or(true, |s| s.stateless().is_ok());
catch_all_error_handling(selected_ok, log_prefix, e)
}
}};
($this:expr, $($($kind:ident)|+ => ($cond:ident, $code:expr),)+) => {{
let log_prefix = &$this.log_prefix;
let selected = $this.selected.as_ref();
move |e| match e {
$($(Error::$kind)|* => s::Response::Cond(s::CondResponse {
cond: s::RespCondType::$cond,
code: $code,
quip: Some(Cow::Owned(e.to_string())),
}),)*
e => {
let selected_ok = selected.map_or(
true, |s| s.stateless().is_ok());
catch_all_error_handling(selected_ok, log_prefix, e)
}
}
}};
}
macro_rules! account {
($this:expr) => {
$this.account.as_mut().ok_or_else(|| {
s::Response::Cond(s::CondResponse {
cond: s::RespCondType::Bad,
code: None,
quip: Some(Cow::Borrowed("Not logged in")),
})
})
};
}
macro_rules! selected {
($this:expr) => {
$this.selected.as_mut().ok_or_else(|| {
s::Response::Cond(s::CondResponse {
cond: s::RespCondType::Bad,
code: None,
quip: Some(Cow::Borrowed("No mailbox selected")),
})
})
};
}
mod auth;
mod commands;
mod defs;
mod fetch;
mod flags;
mod mailboxes;
mod messages;
mod search;
mod user_config;
pub use self::defs::CommandProcessor;