powerset.rs
1 /// Calculate the powerset of a set. 2 fn powerset<T: Clone>(set: &[T]) -> Vec<Vec<T>> { 3 let mut powerset = Vec::new(); 4 5 for mask in 0..1 << set.len() { 6 let mut subset = Vec::new(); 7 8 for (i, x) in set.iter().enumerate() { 9 if (mask & 1 << i) != 0 { 10 subset.push(x.clone()); 11 } 12 } 13 14 powerset.push(subset); 15 } 16 17 powerset 18 }