// https://stackoverflow.com/questions/63644071/idiomatic-way-to-filter-values-matching-a-pattern-in-an-iterator
#[doc(hidden)]// only to be used within crate, not for end users
#[macro_export]macro_rules!if_then_some{($cond: expr, $val: expr)=>{if$cond{Some($val)}else{None}};(let $pattern:pat = $expr: expr, $val: expr)=>{iflet$pattern=$expr{Some($val)}else{None}};}