charming 0.6.0

A visualization library for Rust
Documentation
use serde::{Deserialize, Serialize};

#[derive(Serialize, Deserialize, Debug, PartialEq, PartialOrd, Clone)]
#[serde(untagged)]
#[serde(rename_all = "camelCase")]
pub enum Range {
    Year(i64),
    Single(String),
    Range((String, String)),
}

impl From<i64> for Range {
    fn from(value: i64) -> Self {
        Self::Year(value)
    }
}

impl From<&str> for Range {
    fn from(value: &str) -> Self {
        Self::Single(value.to_string())
    }
}

impl From<String> for Range {
    fn from(value: String) -> Self {
        Self::Single(value)
    }
}

impl From<(&str, &str)> for Range {
    fn from(value: (&str, &str)) -> Self {
        Self::Range((value.0.to_string(), value.1.to_string()))
    }
}

impl From<(String, String)> for Range {
    fn from(value: (String, String)) -> Self {
        Self::Range((value.0, value.1))
    }
}