rsip/message/
header_macros.rs

1#[macro_export]
2macro_rules! header {
3    ($iter:expr, $header:path, $error:expr) => {
4        $iter
5            .find_map(|header| {
6                if let $header(header) = header {
7                    Some(header)
8                } else {
9                    None
10                }
11            })
12            .ok_or($error)
13    };
14}
15
16#[macro_export]
17macro_rules! all_headers {
18    ($iter:expr, $header:path) => {
19        $iter
20            .filter_map(|header| {
21                if let $header(header) = header {
22                    Some(header)
23                } else {
24                    None
25                }
26            })
27            .collect()
28    };
29}
30
31#[macro_export]
32macro_rules! header_opt {
33    ($iter:expr, $header:path) => {
34        $iter.find_map(|header| {
35            if let $header(header) = header {
36                Some(header)
37            } else {
38                None
39            }
40        })
41    };
42}