1use serde::{Deserialize, Serialize};
6use std::fmt;
7use std::ops::Deref;
8
9#[derive(Copy, Clone, Debug, Default, Deserialize, Hash, PartialEq, Eq, Serialize)]
10pub struct ProjectId(pub u32);
11
12impl fmt::Display for ProjectId {
13 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
14 write!(f, "{}", self.0)
15 }
16}
17
18impl Deref for ProjectId {
19 type Target = u32;
20
21 fn deref(&self) -> &Self::Target {
22 &self.0
23 }
24}
25
26#[derive(Copy, Clone, Debug, Deserialize, Hash, PartialEq, Eq, Serialize)]
27pub struct MetricId(pub u32);
28
29impl fmt::Display for MetricId {
30 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
31 write!(f, "{}", self.0)
32 }
33}
34
35impl Deref for MetricId {
36 type Target = u32;
37
38 fn deref(&self) -> &Self::Target {
39 &self.0
40 }
41}
42
43#[derive(Copy, Clone, Debug, Deserialize, Hash, PartialEq, Eq, Serialize)]
44pub struct EventCode(pub u32);
45
46impl fmt::Display for EventCode {
47 fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
48 write!(f, "{}", self.0)
49 }
50}
51
52impl Deref for EventCode {
53 type Target = u32;
54
55 fn deref(&self) -> &Self::Target {
56 &self.0
57 }
58}
59
60#[derive(Deserialize, Debug, PartialEq, Eq, Hash, Copy, Clone, Serialize)]
62pub enum MetricType {
63 Occurrence,
66
67 Integer,
69
70 IntHistogram,
72
73 String,
75}