Skip to main content

kcl_api/
artifact_id.rs

1use serde::Deserialize;
2use serde::Serialize;
3use uuid::Uuid;
4
5#[derive(Debug, Clone, Copy, Serialize, Deserialize, PartialEq, Eq, Ord, PartialOrd, Hash, ts_rs::TS)]
6pub struct ArtifactId(Uuid);
7
8impl ArtifactId {
9    pub fn new(uuid: Uuid) -> Self {
10        Self(uuid)
11    }
12
13    /// A placeholder artifact ID that will be filled in later.
14    pub fn placeholder() -> Self {
15        Self(Uuid::nil())
16    }
17}
18
19impl From<Uuid> for ArtifactId {
20    fn from(uuid: Uuid) -> Self {
21        Self::new(uuid)
22    }
23}
24
25impl From<&Uuid> for ArtifactId {
26    fn from(uuid: &Uuid) -> Self {
27        Self::new(*uuid)
28    }
29}
30
31impl From<ArtifactId> for Uuid {
32    fn from(id: ArtifactId) -> Self {
33        id.0
34    }
35}
36
37impl From<&ArtifactId> for Uuid {
38    fn from(id: &ArtifactId) -> Self {
39        id.0
40    }
41}