aboutsummaryrefslogtreecommitdiff
path: root/src/model/permissions.rs
diff options
context:
space:
mode:
authorZeyla Hellyer <[email protected]>2018-01-01 15:55:46 -0800
committerZeyla Hellyer <[email protected]>2018-01-01 15:55:46 -0800
commit25dddb6695109eeead9e19593cb85a22096c2c7a (patch)
treed68d78d210a2804d10027035163871bf806c7e23 /src/model/permissions.rs
parentGive hyper Response in HTTP errors (diff)
downloadserenity-25dddb6695109eeead9e19593cb85a22096c2c7a.tar.xz
serenity-25dddb6695109eeead9e19593cb85a22096c2c7a.zip
Implement or derive Serialize on all models
Diffstat (limited to 'src/model/permissions.rs')
-rw-r--r--src/model/permissions.rs28
1 files changed, 8 insertions, 20 deletions
diff --git a/src/model/permissions.rs b/src/model/permissions.rs
index ef5510b..dbf0b69 100644
--- a/src/model/permissions.rs
+++ b/src/model/permissions.rs
@@ -44,10 +44,9 @@
//! [Manage Roles]: constant.MANAGE_ROLES.html
//! [Manage Webhooks]: constant.MANAGE_WEBHOOKS.html
-use serde::de::{Error as DeError, Visitor};
-use serde::{Deserialize, Deserializer};
-use std::fmt::{Formatter, Result as FmtResult};
-use std::result::Result as StdResult;
+use serde::de::{Deserialize, Deserializer};
+use serde::ser::{Serialize, Serializer};
+use super::utils::U64Visitor;
/// Returns a set of permissions with the original @everyone permissions set
/// to true.
@@ -433,27 +432,16 @@ impl Permissions {
}
impl<'de> Deserialize<'de> for Permissions {
- fn deserialize<D: Deserializer<'de>>(deserializer: D) -> StdResult<Self, D::Error> {
+ fn deserialize<D: Deserializer<'de>>(deserializer: D) -> Result<Self, D::Error> {
Ok(Permissions::from_bits_truncate(
deserializer.deserialize_u64(U64Visitor)?,
))
}
}
-struct U64Visitor;
-
-impl<'de> Visitor<'de> for U64Visitor {
- type Value = u64;
-
- fn expecting(&self, formatter: &mut Formatter) -> FmtResult {
- formatter.write_str("an unsigned 64-bit integer")
+impl Serialize for Permissions {
+ fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
+ where S: Serializer {
+ serializer.serialize_u64(self.bits())
}
-
- fn visit_i32<E: DeError>(self, value: i32) -> StdResult<u64, E> { Ok(value as u64) }
-
- fn visit_i64<E: DeError>(self, value: i64) -> StdResult<u64, E> { Ok(value as u64) }
-
- fn visit_u32<E: DeError>(self, value: u32) -> StdResult<u64, E> { Ok(u64::from(value)) }
-
- fn visit_u64<E: DeError>(self, value: u64) -> StdResult<u64, E> { Ok(value) }
}