ferron_common/util/
config_macros.rs

1/// Gets configuration entries for validation
2#[macro_export]
3macro_rules! get_entries_for_validation {
4  ($name:literal, $config:expr, $used:expr) => {{
5    $config.entries.get($name).and_then(|value| {
6      $used.insert($name.to_string());
7      value.get_value().map(|_| value)
8    })
9  }};
10}
11
12/// Gets configuration values for validation
13#[macro_export]
14macro_rules! get_values_for_validation {
15  ($name:literal, $config:expr, $used:expr) => {{
16    $config
17      .entries
18      .get($name)
19      .and_then(|value| {
20        $used.insert($name.to_string());
21        value.get_value().map(|_| value)
22      })
23      .map_or(Vec::new(), |value| value.get_values())
24  }};
25}
26
27/// Gets configuration entries
28#[macro_export]
29macro_rules! get_entries {
30  ($name:literal, $config:expr) => {{
31    $config
32      .entries
33      .get($name)
34      .and_then(|value| value.get_value().map(|_| value))
35  }};
36}
37
38/// Gets a configuration entry
39#[macro_export]
40macro_rules! get_entry {
41  ($name:literal, $config:expr) => {{
42    $config
43      .entries
44      .get($name)
45      .and_then(|value| value.get_value().map(|_| value))
46      .and_then(|value| value.get_entry())
47  }};
48}
49
50/// Gets a configuration value
51#[macro_export]
52macro_rules! get_value {
53  ($name:literal, $config:expr) => {{
54    $config
55      .entries
56      .get($name)
57      .and_then(|value| value.get_value().map(|_| value))
58      .and_then(|value| value.get_value())
59  }};
60}
61
62/// Gets configuration values
63#[macro_export]
64macro_rules! get_values {
65  ($name:literal, $config:expr) => {{
66    $config
67      .entries
68      .get($name)
69      .and_then(|value| value.get_value().map(|_| value))
70      .map_or(Vec::new(), |value| value.get_values())
71  }};
72}