use serde::{Serialize, Deserialize};
use rand::{thread_rng, Rng};

/// ID
#[derive(Clone, Deserialize, Serialize, Debug, PartialEq, Eq, Hash)]
pub struct Id(pub u64);
impl Id {
    pub fn to_string(&self) -> String {
        format!("{:x}", self.0)
    }
}
impl Into<String> for Id {
    fn into(self) -> String {
        format!("{:x}", self.0)
    }
}

pub fn generate_id() -> Id {
    Id(thread_rng().gen())
}