discord-ferris 0.0.2

discord-ferris is a Discord API Rust library under development 🦀
Documentation
pub mod flags_numeric {
    use bitflags::Flags;

    pub fn serialize<B, S>(flags: &B, serializer: S) -> Result<S::Ok, S::Error>
    where
        B: Flags,
        B::Bits: ::serde::Serialize,
        S: ::serde::Serializer,
    {
        ::serde::Serialize::serialize(&flags.bits(), serializer)
    }

    pub fn deserialize<'de, B, D>(deserializer: D) -> Result<B, D::Error>
    where
        B: Flags,
        B::Bits: ::serde::Deserialize<'de> + Copy,
        D: ::serde::Deserializer<'de>,
    {
        let bits = <B::Bits as ::serde::Deserialize<'de>>::deserialize(deserializer)?;
        Ok(B::from_bits_truncate(bits))
    }
}

pub mod flags_numeric_opt {
    use bitflags::Flags;
    use serde::Deserialize;

    pub fn serialize<B, S>(v: &Option<B>, serializer: S) -> Result<S::Ok, S::Error>
    where
        B: Flags,
        B::Bits: ::serde::Serialize,
        S: ::serde::Serializer,
    {
        match v {
            Some(flags) => ::serde::Serialize::serialize(&flags.bits(), serializer),
            None => serializer.serialize_none(),
        }
    }

    pub fn deserialize<'de, B, D>(deserializer: D) -> Result<Option<B>, D::Error>
    where
        B: Flags,
        B::Bits: ::serde::Deserialize<'de> + Copy,
        D: ::serde::Deserializer<'de>,
    {
        let bits_opt = Option::<B::Bits>::deserialize(deserializer)?;
        Ok(bits_opt.map(B::from_bits_truncate))
    }
}