rcc_cosmos/proto_wrapper/msg/
msg_serialize.rs1use serde::{Serialize, Serializer};
2use serde::ser::Error;
3use serde_json::Value;
4use crate::Result as CosmosResult;
5
6pub trait SerializeJson {
7 fn to_json(&self) -> CosmosResult<Value>;
8}
9
10pub trait Msg: SerializeJson {}
11
12impl Serialize for dyn Msg {
13 fn serialize<S>(&self, serializer: S) -> Result<<S as Serializer>::Ok, <S as Serializer>::Error>
14 where
15 S: Serializer,
16 {
17 let json_value = self.to_json().map_err(|err| Error::custom(err.to_string()))?;
18 json_value.serialize(serializer)
19 }
20}
21
22