1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
use std::{
fmt::{Debug, Display},
hash::Hash,
};
use derive_more::Display;
use serde::{de::DeserializeOwned, Serialize};
use serde_repr::{Deserialize_repr, Serialize_repr};
#[derive(
Clone,
Copy,
PartialEq,
Eq,
PartialOrd,
Ord,
Hash,
Serialize_repr,
Deserialize_repr,
Debug,
Display,
)]
#[repr(u8)]
pub enum Tag {
Deploy,
Block,
GossipedAddress,
BlockByHeight,
}
pub trait Item: Clone + Serialize + DeserializeOwned + Send + Sync + Debug + Display {
type Id: Copy + Eq + Hash + Serialize + DeserializeOwned + Send + Sync + Debug + Display;
const TAG: Tag;
const ID_IS_COMPLETE_ITEM: bool;
fn id(&self) -> Self::Id;
}