passphrasex_common 0.3.0

Common code for PassPhraseX
Documentation
use serde::ser::SerializeStruct;
use serde::{Deserialize, Serialize, Serializer};

#[derive(Debug, Deserialize)]
pub struct User {
    #[serde(alias = "public_key")]
    pub _id: String,
}

impl Serialize for User {
    fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
    where
        S: Serializer,
    {
        let is_human_readable = serializer.is_human_readable();
        let mut state = serializer.serialize_struct("User", 1)?;

        // If serializer is json then rename _id to public_key
        if is_human_readable {
            state.serialize_field("public_key", &self._id)?;
        } else {
            state.serialize_field("_id", &self._id)?;
        }

        state.end()
    }
}