Skip to content

JorgeRicoVivas/combinatory

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

About

Creates every combination for elements of 2D collections

Resources

License

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages