iif/lib.rs
1#[macro_export]
2/// Returns one of two parts, depending on the evaluation of an expression.
3/// Example:
4/// ```rust
5/// use iif::iif;
6///
7/// let active = true;
8/// let active_text = iif!(active, "Active", "Inactive");
9///
10/// assert_eq!(active_text, "Active");
11///
12/// let active = false;
13/// let active_text = iif!(active, "Active", "Inactive");
14///
15/// assert_eq!(active_text, "Inactive");
16/// ```
17macro_rules! iif {
18 ( $check:expr, $true_case:expr, $false_case:expr ) => {
19 if $check { $true_case } else { $false_case }
20 };
21}
22
23#[macro_export]
24/// Returns an option, depending on the evaluation of an expression.
25/// Example:
26/// ```rust
27/// use iif::iif_opt;
28///
29/// let active = true;
30/// let active_text = iif_opt!(active, "Active");
31///
32/// assert_eq!(active_text, Some("Active"));
33///
34/// let active = false;
35/// let active_text = iif_opt!(active, "Active");
36///
37/// assert_eq!(active_text, None);
38/// ```
39macro_rules! iif_opt {
40 ( $check:expr, $true_case:expr ) => {
41 if $check { Some($true_case) } else { None }
42 };
43}