unison 0.3.2

Unison is a easy to use config loader which can collect configuration from flags, environment variables, and configuration files.
Documentation
use serde_json::Value as JsonValue;
use value::Value;

impl From<JsonValue> for Value {
  fn from(json_value: JsonValue) -> Self {
    match json_value {
      JsonValue::Null => Value::None,
      JsonValue::Bool(b) => Value::Bool(b),
      JsonValue::Number(n) => {
        if let Some(n) = n.as_f64() {
          return Value::F64(n);
        }
        if let Some(n) = n.as_u64() {
          return Value::U64(n);
        }
        if let Some(n) = n.as_i64() {
          return Value::I64(n);
        }
        unreachable!()
      }
      JsonValue::String(s) => Value::String(s),
      JsonValue::Array(v) => Value::HashMap(
        v.into_iter()
          .enumerate()
          .map(|(i, v)| (i.to_string(), v.into()))
          .collect(),
      ),
      JsonValue::Object(h) => Value::HashMap(h.into_iter().map(|(k, v)| (k, v.into())).collect()),
    }
  }
}