macro_rules! bop {
{} => { ... };
{ let $($p:pat $(| $t:ty)? $(= $e:expr)?),*} => { ... };
{ $($l:lifetime :)? match && $($p:pat = $e:expr),* => $b:block else $el:block } => { ... };
{ bool $($l:lifetime :)? match && $($p:pat = $e:expr),* => $b:block $(else $el:block)? } => { ... };
{ !loop match && $($p:pat = $e:expr),* => $b:block else $el:block } => { ... };
{ !loop bool match && $($p:pat = $e:expr),* => $b:block $(else $el:block)? } => { ... };
{ $x:expr $(;)? } => { ... };
{ || $x:expr $(;)? } => { ... };
{ && $x:expr $(;)? } => { ... };
{ = $x:ident $(;)? } => { ... };
{ || $x:expr ; $($op:tt $a:expr $(;$n:tt)?),* } => { ... };
{ && $x:expr ; $($op:tt $a:expr $(;$n:tt)?),* } => { ... };
{ = $x:ident ; $($op:tt $a:expr $(;$n:tt)?),* } => { ... };
{ || $x:expr ; $op:tt $(;)? } => { ... };
{ && $x:expr ; $op:tt $(;)? } => { ... };
{ = $x:ident ; $op:tt $(;)? } => { ... };
{ || $x:expr ; $op:tt ; $($a:expr $(;$n:tt)?),* } => { ... };
{ && $x:expr ; $op:tt ; $($a:expr $(;$n:tt)?),* } => { ... };
{ = $x:ident ; $op:tt ; $($a:expr $(;$n:tt)?),* } => { ... };
{ $fname:ident ; $($v:expr),* => in && $t:expr } => { ... };
{ $fname:ident ; $($v:expr),* => in || $t:expr } => { ... };
{ $fname:ident ; $v:expr => in && $($t:expr),* } => { ... };
{ $fname:ident ; $v:expr => in || $($t:expr),* } => { ... };
{ $($fname:ident ;)? => in && $t:expr } => { ... };
{ $($fname:ident ;)? => in || $t:expr } => { ... };
{ $($fname:ident ;)? $v:expr => in && } => { ... };
{ $($fname:ident ;)? $v:expr => in || } => { ... };
{ $($v:expr),* => in && $t:expr } => { ... };
{ $($v:expr),* => in || $t:expr } => { ... };
{ $v:expr => in && $($t:expr),* } => { ... };
{ $v:expr => in || $($t:expr),* } => { ... };
}Expand description
batch opers
§Usage
- Basic
- batch
||equivalent tobop!(|| 4; == 2, > 3);4 == 2 || 4 > 3; - batch
&&equivalent tobop!(&& 4; == 2, > 3);4 == 2 && 4 > 3; !equivalent tobop!(|| a; == 1;!, == 2);1 == a || a == 2- batch op
equivalent to
bop!(&& 5; > ; 2, 3, 6;!);5 > 2 && 5 > 3 && 6 > 5;
- batch
- Set
equivalent to
let mut a = 1; bop!(= a; + 1, - 2;!, * 3);let mut a = 1; a = a + 1; a = 2 - a; a = a * 3; - Let
equivalent to
bop! { let a|u8 = 1, mut b = 2 }let a: u8 = 1; let mut b = 2; - Let chain
- basic
equivalent to
let a = Some(1); let b = Some(2); let v: i32 = bop!(match && Some(va) = a, Some(vb) = b => { 1 } else { 2 });let a = Some(1); let b = Some(2); let v: i32 = loop { if let Some(va) = a { if let Some(vb) = b { break { 1 }; } } break { 2 }; }; boolequivalent tolet v: bool = bop!(bool match && Some(va) = a, Some(vb) = b => { 1 } else { 2 });let v: bool = loop { if let Some(va) = a { if let Some(vb) = b { { 1 }; break true; } } { 2 }; break false; };!loopequivalent tolet v: i32 = bop!(!loop match && Some(va) = a, Some(vb) = b => { 1 } else { 2 });let v: i32 = if let Some(va) = a { if let Some(vb) = b { { 1 } } else { { 2 } } } else { { 2 } };!loop boolequivalent tolet v: bool = bop!(!loop bool match && Some(va) = a, Some(vb) = b => { 1 } else { 2 });let v: bool = if let Some(va) = a { if let Some(vb) = b { { 1 }; true } else { { 2 }; false } } else { { 2 }; false };
- basic
- In
equivalent to
let r = 0..5; let c = bop!(&1, &2 => in && r);let r = 0..5; let c = r.contains(&1) && r.contains(&2);