bee_ledger/types/
ledger_index.rs1use bee_common::packable::{Packable, Read, Write};
5use bee_message::milestone::MilestoneIndex;
6
7use core::ops::Deref;
8
9#[derive(Debug, Clone, Copy, Default, Eq, Hash, Ord, PartialEq, PartialOrd)]
11pub struct LedgerIndex(pub MilestoneIndex);
12
13impl LedgerIndex {
14 pub fn new(index: MilestoneIndex) -> Self {
16 index.into()
17 }
18}
19
20impl From<MilestoneIndex> for LedgerIndex {
21 fn from(index: MilestoneIndex) -> Self {
22 Self(index)
23 }
24}
25
26impl Deref for LedgerIndex {
27 type Target = <MilestoneIndex as Deref>::Target;
28
29 fn deref(&self) -> &Self::Target {
30 &self.0
31 }
32}
33
34impl Packable for LedgerIndex {
35 type Error = std::io::Error;
36
37 fn packed_len(&self) -> usize {
38 self.0.packed_len()
39 }
40
41 fn pack<W: Write>(&self, writer: &mut W) -> Result<(), Self::Error> {
42 self.0.pack(writer)?;
43
44 Ok(())
45 }
46
47 fn unpack_inner<R: Read + ?Sized, const CHECK: bool>(reader: &mut R) -> Result<Self, Self::Error> {
48 Ok(Self(MilestoneIndex::unpack_inner::<R, CHECK>(reader)?))
49 }
50}