dydx_proto/
lib.rs

1#![allow(clippy::doc_overindented_list_items)]
2#![allow(clippy::doc_lazy_continuation)]
3/// re-export of cosmos-sdk
4pub use cosmos_sdk_proto;
5use cosmos_sdk_proto::Any;
6
7include!(concat!(env!("CARGO_MANIFEST_DIR"), "/src/_includes.rs"));
8
9use prost::Name;
10
11pub trait ToAny: Name + Sized {
12    /// Converts the type to `prost_types::Any`.
13    fn to_any(self) -> Any {
14        let value = self.encode_to_vec();
15        let type_url = Self::type_url();
16        Any { type_url, value }
17    }
18}
19
20impl<M: Name> ToAny for M {}
21
22#[cfg(test)]
23mod test {
24    use super::ToAny;
25    use crate::cosmos_sdk_proto::cosmos::bank::v1beta1::MsgSend;
26    use crate::dydxprotocol::clob::MsgCancelOrder;
27
28    #[test]
29    /// Tests the conversion of `MsgCancelOrder` to `cosmos_sdk_proto::Any`.
30    pub fn test_any_conversion() {
31        let msg = MsgCancelOrder {
32            order_id: None,
33            good_til_oneof: None,
34        };
35        let any = msg.to_any();
36        let url = "/dydxprotocol.clob.MsgCancelOrder";
37        assert_eq!(any.type_url, url);
38    }
39
40    #[test]
41    /// Tests the conversion of `MsgSend` to `cosmos_sdk_proto::Any`.
42    pub fn test_any_conversion_wrapped() {
43        let msg = MsgSend::default();
44        let any = msg.to_any();
45        let url = "/cosmos.bank.v1beta1.MsgSend";
46        assert_eq!(any.type_url, url);
47    }
48}