macro_rules! iif { ($if:expr; $true:expr) => { ... }; ($if:expr ; $true:expr ; $($false:expr)?) => { ... }; (let $pat:pat = $if:expr ; $true:expr) => { ... }; (let $pat:pat = $if:expr ; $true:expr ; $($false:expr)? ) => { ... }; }
Available on crate feature
codegen only.Expand description
A more compact inline if.
A inline alternative for if and if let.
Examples
Replacing if:
use devela::codegen::iif;
// This
let s = iif![1 > 0; true; false];
// Would be equivalent to
let s = if 1 > 0 {
true
} else {
false
};Replacing if let:
use devela::codegen::iif;
let num = Some(123);
// This
iif![let Some(n) = num ; println!("num:{n}") ; { dbg![num]; }];
// Would be equivalent to
if let Some(n) = num {
println!("num:{n}")
} else {
dbg![num];
}Nested:
use devela::codegen::iif;
let mut s = String::new();
let is_premium = Some(true);
// This
iif![let Some(b) = is_premium; iif![b; s += " [premium]"]];
// Would be equivalent to
if let Some(b) = is_premium {
if b {
s += " [premium]";
}
}