1use std::fmt;
11
12use mz_lowertest::MzReflect;
13use mz_repr::GlobalId;
14use serde::{Deserialize, Serialize};
15
16#[derive(
19 Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize, MzReflect,
20)]
21pub enum Id {
22 Local(LocalId),
24 Global(GlobalId),
26}
27
28impl fmt::Display for Id {
29 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
30 match self {
31 Id::Local(id) => id.fmt(f),
32 Id::Global(id) => id.fmt(f),
33 }
34 }
35}
36
37#[derive(
39 Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize, MzReflect,
40)]
41pub struct LocalId(pub(crate) u64);
42
43impl LocalId {
44 pub fn new(v: u64) -> LocalId {
47 LocalId(v)
48 }
49}
50
51impl From<&LocalId> for u64 {
52 fn from(id: &LocalId) -> Self {
53 id.0
54 }
55}
56
57impl fmt::Display for LocalId {
58 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
59 write!(f, "l{}", self.0)
60 }
61}
62
63#[derive(Clone, Copy, Debug, Eq, PartialEq, Ord, PartialOrd, Hash, Serialize, Deserialize)]
65pub struct SourceInstanceId {
66 pub source_id: GlobalId,
68 pub dataflow_id: usize,
71}
72
73impl fmt::Display for SourceInstanceId {
74 fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
75 write!(f, "{}/{}", self.source_id, self.dataflow_id)
76 }
77}