Skip to main content

kimetsu_core/
ids.rs

1use serde::{Deserialize, Serialize};
2use ulid::Ulid;
3
4pub type KimetsuId = Ulid;
5
6pub fn new_id() -> KimetsuId {
7    Ulid::new()
8}
9
10#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
11#[serde(transparent)]
12pub struct RunId(pub KimetsuId);
13
14#[derive(Debug, Clone, Copy, PartialEq, Eq, Hash, Serialize, Deserialize)]
15#[serde(transparent)]
16pub struct EventId(pub KimetsuId);
17
18impl RunId {
19    pub fn new() -> Self {
20        Self(new_id())
21    }
22}
23
24impl Default for RunId {
25    fn default() -> Self {
26        Self::new()
27    }
28}
29
30impl EventId {
31    pub fn new() -> Self {
32        Self(new_id())
33    }
34}
35
36impl Default for EventId {
37    fn default() -> Self {
38        Self::new()
39    }
40}
41
42impl std::fmt::Display for RunId {
43    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
44        write!(f, "{}", self.0)
45    }
46}
47
48impl std::fmt::Display for EventId {
49    fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
50        write!(f, "{}", self.0)
51    }
52}