con

Macro con 

Source
macro_rules! con {
    (@inner $con:ident sum $body:expr) => { ... };
    (@inner $con:ident wsum $body:expr) => { ... };
    (@inner $con:ident $weight:tt $var:expr) => { ... };
    ($name:tt : $rhs:tt $cmp:tt $c1:tt $x1:tt $(+ $c:tt $x:tt)*) => { ... };
}
Expand description

Expressive macro for writing constraints.

§Examples

§Basic Form: Explicit sum of variables

let x1 = 1; let x2 = 2;
con!("basic": 0.0 <= 1.0 x1 + (-1.0) x2);

§Basic Form: Unweighted sum of variables

let xs = vec![1, 2];
con!("basic sum": 0.0 >= sum (&xs));

§Basic Form: Weighted sum of variables

let xs = vec![(1, 1.0), (2, -1.0)];
con!("basic weighted sum": 0.0 = wsum (&xs));

§Mixed Forms

These can be mixed at will, separated by +.

let x1 = 1; let x2 = 2;
let ys = vec![3, 4];
let zs = vec![(5, 1.0), (6, -1.0)];
con!("mixed sum": 0.0 <= 1.0 x1 + (-1.0) x2 + sum (&ys) + wsum (&zs));