// codesnip-guard: comprehension #[cfg_attr(any(),rustfmt::skip)]mod iterable{#[macro_export]macro_rules!comprehension{($it:expr;@$type:ty)=>{$it.collect::<$type>()};($it:expr)=>{comprehension![$it;@Vec<_>]};($it:expr;@$type:ty;$p:pat=>$e:expr)=>{comprehension![$it.map(|$p|$e);@$type]};($it:expr;$p:pat=>$($t:tt)*)=>{comprehension![$it;@Vec<_>;$p=>$($t)*]};($it:expr;$p:pat,$($t:tt)*)=>{comprehension![$it;@Vec<_>;$p,$($t)*]};($it:expr;@$type:ty;$p:pat=>$e:expr)=>{comprehension![$it;@$type;$p=>$e]};($it:expr;@$type:ty;$p:pat,$b:expr)=>{comprehension![$it.filter(|$p|$b);@$type]};($it:expr;@$type:ty;$p:pat=>$e:expr,$b:expr)=>{comprehension![$it.filter_map(|$p|if$b{Some($e)}else{None});@$type]};($it:expr;@$type:ty;$p:pat=>$e:expr,$b1:expr,$b2:expr)=>{comprehension![$it;@$type;$p=>$e,$b1&$b2]};($it:expr;@$type:ty;$p:pat=>$e:expr,$b1:expr,$b2:expr,$($t:tt)*)=>{comprehension![$it;@$type;$p=>$e,$b1&$b2,$($t)*]};}}