use chrono::Utc;
use rand::prelude::*;
#[derive(Debug, Clone)]
pub struct Meiid {}
impl Meiid {
pub fn new() -> Self {
Self { }
}
pub fn uuid(&self) -> String {
return generate_uuid();
}
}
fn generate_uuid() -> String {
let mut uuid = String::new();
let a_z = "a b c d e f g h i j k l m n o p q r s t u v w x y z";
let a_z = a_z.split(" ").collect::<Vec<_>>();
let date = Utc::now();
let date = date
.naive_utc()
.date()
.to_string()
.split("-")
.collect::<Vec<_>>()
.join("");
let mut rng = rand::thread_rng();
let id = format!(
"me{}{}{}{}-{}{}{}{}-{}",
a_z[rng.gen_range(0..a_z.len())],
rng.gen_range(0..a_z.len()),
a_z[rng.gen_range(0..a_z.len())],
a_z[rng.gen_range(0..a_z.len())],
a_z[rng.gen_range(0..a_z.len())],
rng.gen_range(0..a_z.len()),
a_z[rng.gen_range(0..a_z.len())],
a_z[rng.gen_range(0..a_z.len())],
&date,
);
uuid.push_str(id.as_str());
uuid
}
#[cfg(test)]
mod test {
use crate::Meiid;
#[test]
fn tester() {
let i = Meiid::new();
for _ in 0..1 {
println!("{:}", i.uuid());
}
}
}