macro_rules! random_unions {
    (
        ($($vis:tt)*),
        $union: ident,
        $random_struct: ident,
        $random_fn: ident,
        $n: expr,
        $([$i: expr, $t: ident, $it: ident, $variant: ident, $xs: ident, $xs_gen: ident]),*
    ) => { ... };
}
Expand description

Defines random union generators.

Malachite provides random_union2s, but you can also define random_union3s, random_union4s, and so on, in your program using the code below. The documentation for random_union2s describes these other functions as well.

See usage examples here.

use malachite_base::num::random::{random_unsigned_range, RandomUnsignedRange};
use malachite_base::random::Seed;
use malachite_base::unions::UnionFromStrError;
use std::fmt::{self, Display, Formatter};
use std::str::FromStr;

union_struct!(
    (pub(crate)),
    Union3,
    Union3<T, T, T>,
    [A, A, 'A', a],
    [B, B, 'B', b],
    [C, C, 'C', c]
);
union_struct!(
    (pub(crate)),
    Union4,
    Union4<T, T, T, T>,
    [A, A, 'A', a],
    [B, B, 'B', b],
    [C, C, 'C', c],
    [D, D, 'D', d]
);
union_struct!(
    (pub(crate)),
    Union5,
    Union5<T, T, T, T, T>,
    [A, A, 'A', a],
    [B, B, 'B', b],
    [C, C, 'C', c],
    [D, D, 'D', d],
    [E, E, 'E', e]
);
union_struct!(
    (pub(crate)),
    Union6,
    Union6<T, T, T, T, T, T>,
    [A, A, 'A', a],
    [B, B, 'B', b],
    [C, C, 'C', c],
    [D, D, 'D', d],
    [E, E, 'E', e],
    [F, F, 'F', f]
);
union_struct!(
    (pub(crate)),
    Union7,
    Union7<T, T, T, T, T, T, T>,
    [A, A, 'A', a],
    [B, B, 'B', b],
    [C, C, 'C', c],
    [D, D, 'D', d],
    [E, E, 'E', e],
    [F, F, 'F', f],
    [G, G, 'G', g]
);
union_struct!(
    (pub(crate)),
    Union8,
    Union8<T, T, T, T, T, T, T, T>,
    [A, A, 'A', a],
    [B, B, 'B', b],
    [C, C, 'C', c],
    [D, D, 'D', d],
    [E, E, 'E', e],
    [F, F, 'F', f],
    [G, G, 'G', g],
    [H, H, 'H', h]
);

random_unions!(
    (pub(crate)),
    Union3,
    RandomUnion3s,
    random_union3s,
    3,
    [0, X, I, A, xs, xs_gen],
    [1, Y, J, B, ys, ys_gen],
    [2, Z, K, C, zs, zs_gen]
);
random_unions!(
    (pub(crate)),
    Union4,
    RandomUnion4s,
    random_union4s,
    4,
    [0, X, I, A, xs, xs_gen],
    [1, Y, J, B, ys, ys_gen],
    [2, Z, K, C, zs, zs_gen],
    [3, W, L, D, ws, ws_gen]
);
random_unions!(
    (pub(crate)),
    Union5,
    RandomUnion5s,
    random_union5s,
    5,
    [0, X, I, A, xs, xs_gen],
    [1, Y, J, B, ys, ys_gen],
    [2, Z, K, C, zs, zs_gen],
    [3, W, L, D, ws, ws_gen],
    [4, V, M, E, vs, vs_gen]
);
random_unions!(
    (pub(crate)),
    Union6,
    RandomUnion6s,
    random_union6s,
    6,
    [0, X, I, A, xs, xs_gen],
    [1, Y, J, B, ys, ys_gen],
    [2, Z, K, C, zs, zs_gen],
    [3, W, L, D, ws, ws_gen],
    [4, V, M, E, vs, vs_gen],
    [5, U, N, F, us, us_gen]
);
random_unions!(
    (pub(crate)),
    Union7,
    RandomUnion7s,
    random_union7s,
    7,
    [0, X, I, A, xs, xs_gen],
    [1, Y, J, B, ys, ys_gen],
    [2, Z, K, C, zs, zs_gen],
    [3, W, L, D, ws, ws_gen],
    [4, V, M, E, vs, vs_gen],
    [5, U, N, F, us, us_gen],
    [6, T, O, G, ts, ts_gen]
);
random_unions!(
    (pub(crate)),
    Union8,
    RandomUnion8s,
    random_union8s,
    8,
    [0, X, I, A, xs, xs_gen],
    [1, Y, J, B, ys, ys_gen],
    [2, Z, K, C, zs, zs_gen],
    [3, W, L, D, ws, ws_gen],
    [4, V, M, E, vs, vs_gen],
    [5, U, N, F, us, us_gen],
    [6, T, O, G, ts, ts_gen],
    [7, S, P, H, ss, ss_gen]
);