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
#[macro_export]
macro_rules! message_struct {
    ($name:ident {$($field:ident: $t:ty $(,)? )*}) => {
        #[cfg_attr(feature = "py-bindings", pyclass, derive(PyStreamable))]
        #[derive(Streamable, Hash, Debug, Clone, Eq, PartialEq)]
        pub struct $name {
            $(pub $field: $t),*
        }

        impl ChiaProtocolMessage for $name {
            fn msg_type() -> ProtocolMessageTypes {
                ProtocolMessageTypes::$name
            }
        }
    }
}

#[macro_export]
macro_rules! streamable_struct {
    ($name:ident {$($field:ident: $t:ty $(,)? )*}) => {
        #[cfg_attr(feature = "py-bindings", pyclass, derive(PyStreamable))]
        #[derive(Streamable, Hash, Debug, Clone, Eq, PartialEq)]
        pub struct $name {
            $(pub $field: $t),*
        }
    }
}