tier 0.1.17

Rust configuration library for layered TOML, env, and CLI settings
Documentation
use serde::de::Unexpected;
use serde_json::Value;

pub(super) fn unexpected_value(value: &Value) -> Unexpected<'_> {
    match value {
        Value::Null => Unexpected::Unit,
        Value::Bool(value) => Unexpected::Bool(*value),
        Value::Number(number) => {
            if let Some(value) = number.as_i64() {
                Unexpected::Signed(value)
            } else if let Some(value) = number.as_u64() {
                Unexpected::Unsigned(value)
            } else if let Some(value) = number.as_f64() {
                Unexpected::Float(value)
            } else {
                Unexpected::Other("number")
            }
        }
        Value::String(value) => Unexpected::Str(value),
        Value::Array(_) => Unexpected::Other("array"),
        Value::Object(_) => Unexpected::Other("object"),
    }
}