Skip to main content

mycommon_utils/utils/
uuid_util.rs

1use 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    //生成一个12位的唯一字符串
18    pub fn uuid_v4_12() -> String {
19        let uuid = Uuid::new_v4().to_string().replace("-","");
20        uuid[0..12].to_string()
21    }
22    //生成雪花id
23    pub fn snowflake_id() -> i64 {
24        let mut bucket = get_snowflake_bucket().lock().unwrap();
25        bucket.get_id()
26    }
27}