bsv-wallet-toolbox 0.2.23

Pure Rust BSV wallet-toolbox implementation
Documentation
//! Lenient serde helpers for TS server interop.
//!
//! The TS storage server sometimes returns `0`/`1` instead of `false`/`true`
//! for boolean fields. These helpers accept both representations.

use serde::{self, Deserialize, Deserializer};

/// Deserialize a bool that may arrive as `0`/`1` integer or `true`/`false`.
pub fn bool_from_int_or_bool<'de, D>(deserializer: D) -> Result<bool, D::Error>
where
    D: Deserializer<'de>,
{
    #[derive(Deserialize)]
    #[serde(untagged)]
    enum IntOrBool {
        Bool(bool),
        Int(i64),
    }

    match IntOrBool::deserialize(deserializer)? {
        IntOrBool::Bool(b) => Ok(b),
        IntOrBool::Int(i) => Ok(i != 0),
    }
}