# Permutator
The main purpose is to get a permutation at specific point, not an iterator style.
It currently provide 2 functions to generate a combination.
- get_cartesian_for
- get_permutation_for
It also provide utilities functions like:
- get_cartesian_size
- get_permutation_size
# Examples
```Rust
use permutator::get_cartesian_size;
get_cartesian_size(3, 2); // return 9.
get_cartesian_size(3, 3); // return 27.
use permutator::get_cartesian_for;
let nums = [1, 2, 3];
get_cartesian_for(&nums, 2, 0); // Return Ok([1, 1])
get_cartesian_for(&nums, 2, 3); // Return Ok([2, 1])
get_cartesian_for(&nums, 2, 8); // Return Ok([3, 3])
get_cartesian_for(&nums, 2, 9); // Return Err("Parameter `i` is out of bound")
get_cartesian_for(&nums, 4, 0); // Return Err("Parameter `degree` cannot be larger than size of objects")
use permutator::get_permutation_size;
get_permutation_size(3, 2); // return = 6
get_permutation_size(4, 2); // return = 12
use permutator::get_permutation_for;
let nums = [1, 2, 3, 4];
get_permutation_for(&nums, 2, 0); // return Result([1, 2])
get_permutation_for(&nums, 3, 0); // return Result([1, 2, 3])
get_permutation_for(&nums, 2, 5); // return Result([2, 4])
get_permutation_for(&nums, 2, 11); // return Result([4, 3])
get_permutation_for(&nums, 2, 12); // return Err("parameter x is outside a possible length")
get_permutation_for(&nums, 5, 0); // return Err("Insufficient number of object in parameters objects for given parameter degree")
```