bee_block/output/
chain_id.rs1use derive_more::From;
5
6use crate::output::{AliasId, FoundryId, NftId, OutputId};
7
8#[derive(Clone, Copy, Eq, Hash, PartialEq, Ord, PartialOrd, From)]
10pub enum ChainId {
11 Alias(AliasId),
13 Foundry(FoundryId),
15 Nft(NftId),
17}
18
19impl ChainId {
20 pub fn is_null(&self) -> bool {
22 match self {
23 Self::Alias(alias_id) => alias_id.is_null(),
24 Self::Foundry(foundry_id) => foundry_id.is_null(),
25 Self::Nft(nft_id) => nft_id.is_null(),
26 }
27 }
28
29 pub fn or_from_output_id(self, output_id: OutputId) -> Self {
31 if !self.is_null() {
32 return self;
33 }
34
35 match self {
36 Self::Alias(_) => Self::Alias(AliasId::from(output_id)),
37 Self::Foundry(_) => self,
38 Self::Nft(_) => Self::Nft(NftId::from(output_id)),
39 }
40 }
41}
42
43impl core::fmt::Display for ChainId {
44 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
45 match self {
46 ChainId::Alias(id) => write!(f, "{}", id),
47 ChainId::Foundry(id) => write!(f, "{}", id),
48 ChainId::Nft(id) => write!(f, "{}", id),
49 }
50 }
51}
52
53impl core::fmt::Debug for ChainId {
54 fn fmt(&self, f: &mut core::fmt::Formatter) -> core::fmt::Result {
55 match self {
56 ChainId::Alias(id) => write!(f, "ChainId({:?})", id),
57 ChainId::Foundry(id) => write!(f, "ChainId({:?})", id),
58 ChainId::Nft(id) => write!(f, "ChainId({:?})", id),
59 }
60 }
61}