# batch_oper ## Rename to [libsugar](https://crates.io/crates/libsugar) - [repo](https://github.com/libsugar/sugar.rs) --- ![Rust](https://github.com/BatchOperator/BatchOperRust/workflows/Rust/badge.svg) batch_oper provides some batch operation macro for some operations ***See [https://docs.rs/batch_oper/](https://docs.rs/batch_oper/)*** ***here is just a brief introduction*** ## Usage - **Basic** - batch `||` ```rust bop!(|| 4; == 2, > 3); ``` *equivalent to* ```rust 4 == 2 || 4 > 3 ``` - batch `&&` ```rust bop!(&& 4; == 2, > 3); ``` *equivalent to* ```rust 4 == 2 && 4 > 3 ``` - `!` ```rust bop!(|| a; == 1;!, == 2); ``` *equivalent to* ```rust 1 == a || a == 2 ``` - batch op ```rust bop!(&& 5; > ; 2, 3, 6;!); ``` *equivalent to* ```rust 5 > 2 && 5 > 3 && 6 > 5 ``` - **Set** ```rust let mut a = 1; bop!(= a; + 1, - 2;!, * 3); ``` *equivalent to* ```rust let mut a = 1; a = a + 1; a = 2 - a; a = a * 3; ``` - **Let** ```rust bop! { let a|u8 = 1, mut b = 2 } ``` *equivalent to* ```rust let a: u8 = 1; let mut b = 2; ``` - **Let chain** - basic ```rust let a = Some(1); let b = Some(2); let _: i32 = bop!(match && Some(va) = a, Some(vb) = b => { 1 } else { 2 }); ``` *equivalent to* ```rust let a = Some(1); let b = Some(2); let _: i32 = loop { if let Some(va) = a { if let Some(vb) = b { break { 1 }; } } break { 2 }; }; ``` - `bool` ```rust let _: bool = bop!(bool match && Some(va) = a, Some(vb) = b => { 1 } else { 2 }); ``` *equivalent to* ```rust let _: bool = loop { if let Some(va) = a { if let Some(vb) = b { { 1 }; break true; } } { 2 }; break false; }; ``` - `!loop` ```rust let _: i32 = bop!(!loop match && Some(va) = a, Some(vb) = b => { 1 } else { 2 }); ``` *equivalent to* ```rust let _: i32 = if let Some(va) = a { if let Some(vb) = b { { 1 } } else { { 2 } } } else { { 2 } } ``` - `!loop bool` ```rust let _: bool = bop!(!loop bool match && Some(va) = a, Some(vb) = b => { 1 } else { 2 }); ``` *equivalent to* ```rust let _: bool = if let Some(va) = a { if let Some(vb) = b { { 1 }; true } else { { 2 }; false } } else { { 2 }; false } ``` - **In** ```rust let r = 0..5; let c = bop!(&1, &2 => in && r); ``` *equivalent to* ```rust let r = 0..5; let c = r.contains(&1) && r.contains(&2); ``` - `||` ```rust let c = bop!(&1, &2 => in || r); ``` *equivalent to* ```rust let c = r.contains(&1) || r.contains(&2); ``` - custom funcion name ```rust let c = bop!(has; &1, &2 => in && r); ``` *equivalent to* ```rust let c = r.has(&1) && r.has(&2); ``` - `Using` ```rust let v = (1, 2); let v2 = (3, 4); using!((a, b) = v, (c, d) = v2; { println!("{} {} {} {}", a, b, c, d) }) ``` *equivalent to* ```rust let v = (1, 2); let v2 = (3, 4); { let (a, b) = v; let (c, d) = v2; { println!("{} {} {} {}", a, b, c, d) } } ```