discord_client_structs 0.2.0

Discord API/gateway structs with serde support
Documentation
use serde::{Deserialize, Deserializer};

#[derive(Debug, Clone)]
pub struct UserExperiment {
    pub hash: i64,
    pub revision: i64,
    pub bucket: i64,
    pub r#override: bool,
    pub population: i64,
    pub hash_result: i64,
    pub aa_mode: i64,
    pub trigger_debugging: i64,
}

impl<'de> Deserialize<'de> for UserExperiment {
    fn deserialize<D>(deserializer: D) -> Result<UserExperiment, D::Error>
    where
        D: Deserializer<'de>,
    {
        let v: Vec<i64> = Deserialize::deserialize(deserializer)?;
        Ok(UserExperiment {
            hash: v.get(0).cloned().unwrap_or_default(),
            revision: v.get(1).cloned().unwrap_or_default(),
            bucket: v.get(2).cloned().unwrap_or_default(),
            r#override: v.get(3).cloned().unwrap_or_default() == 0,
            population: v.get(4).cloned().unwrap_or_default(),
            hash_result: v.get(5).cloned().unwrap_or_default(),
            aa_mode: v.get(6).cloned().unwrap_or_default(),
            trigger_debugging: v.get(7).cloned().unwrap_or_default(),
        })
    }
}