use super::*; #[derive(Debug, PartialEq, Copy, Clone, Hash, Eq)] pub struct InscriptionId { pub txid: Txid, pub index: u32, } impl Default for InscriptionId { fn default() -> Self { Self { txid: Txid::all_zeros(), index: 0, } } } impl InscriptionId { pub(crate) fn parent_value(self) -> Vec { let index = self.index.to_le_bytes(); let mut index_slice = index.as_slice(); while index_slice.last().copied() == Some(0) { index_slice = &index_slice[0..index_slice.len() - 1]; } self .txid .to_byte_array() .iter() .chain(index_slice) .copied() .collect() } } impl<'de> Deserialize<'de> for InscriptionId { fn deserialize(deserializer: D) -> Result where D: Deserializer<'de>, { Ok(DeserializeFromStr::deserialize(deserializer)?.0) } } impl Serialize for InscriptionId { fn serialize(&self, serializer: S) -> Result where S: Serializer, { serializer.collect_str(self)