live_entity/
entity.rs

1use crate::Updatable;
2use serde::de::DeserializeOwned;
3use serde::Serialize;
4use std::fmt::Debug;
5use std::hash::Hash;
6pub trait IDTrait: Eq + Hash + Send + Sync + DeserializeOwned + Serialize + Debug + Clone {}
7impl<T: Eq + Hash + Send + Sync + DeserializeOwned + Serialize + Debug + Clone> IDTrait for T {}
8
9pub trait UpdateTrait: Send + Sync + Serialize + DeserializeOwned + Debug + Clone {}
10impl<T: Send + Sync + Serialize + DeserializeOwned + Debug + Clone> UpdateTrait for T {}
11
12pub trait ProtoEntity<U: UpdateTrait>: 
13    Serialize
14    + DeserializeOwned
15    + Clone
16    + Eq
17    + Updatable<U>
18    + Send
19    + Sync
20    + Unpin
21    + Debug
22    + 'static {}
23impl<U: UpdateTrait, T: 
24    Serialize
25    + DeserializeOwned
26    + Clone
27    + Eq
28    + Updatable<U>
29    + Send
30    + Sync
31    + Unpin
32    + Debug
33    + 'static> ProtoEntity<U> for T {}
34
35pub trait Entity: ProtoEntity<Self::Update>
36{
37    type Update: UpdateTrait;
38    type ID: IDTrait;
39    const TYPE_NAME: &'static str;
40
41    fn get_id(&self) -> &Self::ID;
42}