fixup! add support for the imap quota extension (RFC 2087)

This commit is contained in:
Edward Rudd 2022-09-26 17:56:28 -04:00
parent 57ce6bb545
commit 9f7aedc8b0

View file

@ -35,7 +35,7 @@ impl Display for QuotaResourceLimit<'_> {
/// From [Resources](https://datatracker.ietf.org/doc/html/rfc2087#section-3) /// From [Resources](https://datatracker.ietf.org/doc/html/rfc2087#section-3)
/// ///
/// Used by [`QuotaLimit`], and [`QuotaResource`] /// Used by [`QuotaLimit`], and [`QuotaResource`]
#[derive(Debug, Eq, PartialEq)] #[derive(Debug, Eq, PartialEq, Clone)]
#[non_exhaustive] #[non_exhaustive]
pub enum QuotaResourceName<'a> { pub enum QuotaResourceName<'a> {
/// Sum of messages' RFC822.SIZE, in units of 1024 octets /// Sum of messages' RFC822.SIZE, in units of 1024 octets
@ -56,6 +56,17 @@ impl Display for QuotaResourceName<'_> {
} }
} }
impl<'a> QuotaResourceName<'a> {
/// Get an owned version of the [`QuotaResourceName`].
pub fn into_owned(self) -> QuotaResourceName<'static> {
match self {
QuotaResourceName::Storage => QuotaResourceName::Storage,
QuotaResourceName::Message => QuotaResourceName::Message,
QuotaResourceName::Atom(n) => QuotaResourceName::Atom(Cow::Owned(n.into_owned())),
}
}
}
/// From [QUOTA Response](https://datatracker.ietf.org/doc/html/rfc2087#section-5.1) /// From [QUOTA Response](https://datatracker.ietf.org/doc/html/rfc2087#section-5.1)
/// ///
/// This is a wrapper around a single single [`Quota`]. /// This is a wrapper around a single single [`Quota`].
@ -219,3 +230,17 @@ impl QuotaRootResponse {
&self.borrow_inner().quotas[..] &self.borrow_inner().quotas[..]
} }
} }
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_quota_resource_name_into_owned() {
let name = "TEST";
let borrowed = QuotaResourceName::Atom(Cow::Borrowed(name));
let new_owned = borrowed.into_owned();
assert!(matches!(new_owned, QuotaResourceName::Atom(Cow::Owned(_))));
}
}