diff options
| author | Zeyla Hellyer <[email protected]> | 2018-01-01 15:55:46 -0800 |
|---|---|---|
| committer | Zeyla Hellyer <[email protected]> | 2018-01-01 15:55:46 -0800 |
| commit | 25dddb6695109eeead9e19593cb85a22096c2c7a (patch) | |
| tree | d68d78d210a2804d10027035163871bf806c7e23 /src/model/permissions.rs | |
| parent | Give hyper Response in HTTP errors (diff) | |
| download | serenity-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.rs | 28 |
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) } } |