architect_api/utils/
messaging.rs1pub use uuid::Uuid;
4
5pub trait MaybeRequest {
6 fn request_id(&self) -> Option<Uuid>;
7 fn response_id(&self) -> Option<Uuid>;
8}
9
10#[macro_export]
11macro_rules! match_response {
12 ($pat:pat $(if $guard:expr)? => $result:expr) => {
13 |msg| match msg {
14 $pat $(if $guard)? => Some($result),
15 _ => None
16 }
17 };
18}
19
20#[macro_export]
21macro_rules! expect_response {
22 ($pat:pat $(if $guard:expr)? => $result:expr) => {
23 |msg| match msg {
24 $pat $(if $guard)? => Ok($result),
25 _ => Err(anyhow::anyhow!("unexpected response message")),
26 }
27 };
28}