combinatory 1.0.0

Create every combination possible of values of 2D collections / iterators.
Documentation
  • Coverage
  • 100%
    7 out of 7 items documented4 out of 7 items with examples
  • Size
  • Source code size: 28.22 kB This is the summed size of all the files inside the crates.io package for this release.
  • Documentation size: 1.83 MB This is the summed size of all files generated by rustdoc for all configured targets
  • Links
  • JorgeRicoVivas/combinatory
    0 0 0
  • crates.io
  • Dependencies
  • Versions
  • Owners
  • JorgeRicoVivas

Combinatory

crates.io docs.rs GitHub Actions Workflow Status GitHub last commit GitHub License

You are reading the documentation for combinatory version 1.0.0

Allows to combinate values of two dimensional iterators / collections.

For example, the combinations of each value [1, 2] with the values [a, b] are:

  • (1,a).
  • (1,b).
  • (2,a).
  • (2,b).

The following code shows every combination of a menu-deal composed of a main, a side, and a dessert, having two options for each:

use combinatory::Combinatory;

const SIDES: &[&'static str] = &["Soup", "Bread and butter"];
const MAIN: &[&'static str] = &["Chicken", "Burger with fries"];
const DESSERTS: &[&'static str] = &["Vanilla ice cream", "Souffle"];

let possible_menus = Combinatory::new([SIDES, MAIN, DESSERTS])
    .ref_combinations()
    .enumerate()
    .map(|(menu_index, possible_menu)| {
        format!("{} - {}", menu_index + 1, possible_menu
            .map(|string|string.to_string()).collect::<Vec<_>>().join(", "))
    })
    .collect::<Vec<_>>()
    .join("\n");

println!("{possible_menus}");

assert_eq!(possible_menus,
"1 - Soup, Chicken, Vanilla ice cream
2 - Soup, Chicken, Souffle
3 - Soup, Burger with fries, Vanilla ice cream
4 - Soup, Burger with fries, Souffle
5 - Bread and butter, Chicken, Vanilla ice cream
6 - Bread and butter, Chicken, Souffle
7 - Bread and butter, Burger with fries, Vanilla ice cream
8 - Bread and butter, Burger with fries, Souffle");

This code will print:

1 - Soup, Chicken, Vanilla ice cream
2 - Bread and butter, Chicken, Vanilla ice cream
3 - Soup, Fillet with fries, Vanilla ice cream
4 - Bread and butter, Fillet with fries, Vanilla ice cream
5 - Soup, Chicken, Souffle
6 - Bread and butter, Chicken, Souffle
7 - Soup, Fillet with fries, Souffle
8 - Bread and butter, Fillet with fries, Souffle