Macro rplex::con[][src]

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));