mithril_common/messages/interface.rs
1use serde::{Deserialize, Serialize};
2
3use crate::StdResult;
4
5/// From message adapter trait
6pub trait FromMessageAdapter<U, V> {
7 /// Adapt entity to message
8 fn adapt(from: U) -> V;
9}
10
11/// TryFrom message adapter trait
12pub trait TryFromMessageAdapter<U, V> {
13 /// Adapt entity to message
14 fn try_adapt(from: U) -> StdResult<V>;
15}
16
17/// To message adapter trait
18pub trait ToMessageAdapter<U, V>
19where
20 V: Serialize + for<'a> Deserialize<'a>,
21{
22 /// Adapt message to entity
23 fn adapt(from: U) -> V;
24}
25
26/// TryTo message adapter trait
27pub trait TryToMessageAdapter<U, V> {
28 /// Adapt message to entity
29 fn try_adapt(from: U) -> StdResult<V>;
30}