1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45
extern crate chrono; extern crate uuid; use chrono::{Timelike, Utc}; use uuid::v1::{Context, Timestamp}; use uuid::Uuid; pub fn uuid_v1() -> String { let context = Context::new(42); let ts = Timestamp::from_unix( &context, Utc::now().second() as u64, Utc::now().timestamp_subsec_nanos(), ); let uuid = Uuid::new_v1(ts, &[1, 2, 3, 4, 5, 6]).expect("failed to generate UUID"); uuid.to_string() } pub fn uuid_v4() -> String { Uuid::new_v4().to_string() } #[cfg(test)] mod tests { use crate::unique; use crate::test_helper; #[test] fn uuid_v1() { let data1 = unique::uuid_v1(); assert_ne!(data1, ""); if test_helper::print() { println!("{}", data1); } } #[test] fn uuid_v4() { let data1 = unique::uuid_v4(); assert_ne!(data1, ""); if test_helper::print() { println!("{}", data1); } } }