elfo_core/
macros.rs

1#[macro_export]
2macro_rules! assert_msg {
3    ($envelope:expr, $pat:pat) => {{
4        use $crate::_priv::{AnyMessageBorrowed, EnvelopeBorrowed};
5
6        let envelope = &$envelope;
7        let msg = envelope.unpack_regular().downcast2();
8
9        #[allow(unreachable_patterns)]
10        match &msg {
11            &$pat => {}
12            _ => panic!(
13                "\na message doesn't match a pattern\npattern: {}\nmessage: {:#?}\n",
14                stringify!($pat),
15                msg,
16            ),
17        }
18    }};
19}
20
21#[macro_export]
22macro_rules! assert_msg_eq {
23    ($envelope:expr, $expected:expr) => {{
24        use $crate::_priv::{AnyMessageBorrowed, EnvelopeBorrowed};
25
26        let envelope = &$envelope;
27
28        let actual = envelope.unpack_regular().downcast2();
29        let expected = &$expected;
30
31        fn unify<T>(_rhs: &T, _lhs: &T) {}
32        unify(actual, expected);
33
34        assert_eq!(actual, expected);
35    }};
36}