pwr-rs 0.3.4-alpha

Complete PWR Chain library in Rust
Documentation
use serde::{Deserialize};
use serde_json::Number;

#[derive(Debug, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Validator {
    pub address: String,
    pub ip: String,
    pub voting_power: u128,
    #[serde(deserialize_with = "deserialize_number_to_string")]
    pub total_shares: String,
    pub status: String,
}

fn deserialize_number_to_string<'de, D>(deserializer: D) -> Result<String, D::Error>
where
    D: serde::Deserializer<'de>,
{
    #[derive(Deserialize)]
    #[serde(untagged)]
    enum StringOrNumber {
        String(String),
        Number(Number),
    }

    match StringOrNumber::deserialize(deserializer)? {
        StringOrNumber::String(s) => Ok(s),
        StringOrNumber::Number(n) => Ok(n.to_string()),
    }
}