mycommon_utils/utils/
uuid_util.rs1use std::sync::{Mutex, OnceLock};
2use uuid::Uuid;
3
4pub struct GeneratorId;
5
6static SNOWFLAKE_BUCKET: OnceLock<Mutex<snowflake::SnowflakeIdBucket>> = OnceLock::new();
7
8fn get_snowflake_bucket() -> &'static Mutex<snowflake::SnowflakeIdBucket> {
9 SNOWFLAKE_BUCKET.get_or_init(|| Mutex::new(snowflake::SnowflakeIdBucket::new(1, 1)))
10}
11
12impl GeneratorId {
13 pub fn uuid_v4() -> String {
14 Uuid::new_v4().as_simple().to_string()
15 }
16
17 pub fn uuid_v4_12() -> String {
19 let uuid = Uuid::new_v4().to_string().replace("-","");
20 uuid[0..12].to_string()
21 }
22 pub fn snowflake_id() -> i64 {
24 let mut bucket = get_snowflake_bucket().lock().unwrap();
25 bucket.get_id()
26 }
27}