contained_core/
utils.rs

1/*
2    Appellation: utils <module>
3    Contrib: FL03 <jo3mccain@icloud.com>
4    Description: ... summary ...
5*/
6
7/// [subspace] is a function for creating subsets of a given [Vec] and set size
8pub fn subspace<T: Clone>(args: Vec<T>, size: usize) -> Vec<Vec<T>> {
9    let mut res = Vec::<Vec<T>>::new();
10    for i in 0..args.len() {
11        let tmp = (1..size)
12            .map(|z: usize| (i + z) % size)
13            .collect::<Vec<usize>>();
14        for j in 0..tmp.len() {
15            let mut subset = vec![args[i].clone()];
16            subset.append(
17                &mut (0..tmp.len())
18                    .map(|k: usize| args[tmp[(j + k) % tmp.len()]].clone())
19                    .collect(),
20            );
21            res.push(subset.clone());
22        }
23    }
24    res
25}