1use std::fmt;
11
12use mz_repr::GlobalId;
13use serde::{Deserialize, Serialize};
14
15#[derive(
18 Clone,
19 Copy,
20 Debug,
21 Eq,
22 PartialEq,
23 Ord,
24 PartialOrd,
25 Hash,
26 Serialize,
27 Deserialize
28)]
29pub enum Id {
30 Local(LocalId),
32 Global(GlobalId),
34}
35
36impl fmt::Display for Id {
37 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
38 match self {
39 Id::Local(id) => id.fmt(f),
40 Id::Global(id) => id.fmt(f),
41 }
42 }
43}
44
45#[derive(
47 Clone,
48 Copy,
49 Debug,
50 Eq,
51 PartialEq,
52 Ord,
53 PartialOrd,
54 Hash,
55 Serialize,
56 Deserialize
57)]
58pub struct LocalId(pub(crate) u64);
59
60impl LocalId {
61 pub fn new(v: u64) -> LocalId {
64 LocalId(v)
65 }
66}
67
68impl From<&LocalId> for u64 {
69 fn from(id: &LocalId) -> Self {
70 id.0
71 }
72}
73
74impl fmt::Display for LocalId {
75 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
76 write!(f, "l{}", self.0)
77 }
78}
79
80#[derive(
82 Clone,
83 Copy,
84 Debug,
85 Eq,
86 PartialEq,
87 Ord,
88 PartialOrd,
89 Hash,
90 Serialize,
91 Deserialize
92)]
93pub struct SourceInstanceId {
94 pub source_id: GlobalId,
96 pub dataflow_id: usize,
99}
100
101impl fmt::Display for SourceInstanceId {
102 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
103 write!(f, "{}/{}", self.source_id, self.dataflow_id)
104 }
105}