Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- fn main() {
- println!("Hello, world!");
- let list = [1,2,3,4];
- dbg!(foo(&list, 2));
- }
- fn foo<T: Clone+std::fmt::Debug>(list: &[T], n: usize) -> Vec<Vec<T>> {
- let mut ret = Vec::new();
- if list.len() == n {
- ret.push(list.to_vec());
- } else if n == 1 {
- ret.extend(list.iter().map(|i| vec![i.clone()]));
- } else {
- for first_i in 0..list.len()-n+1 {
- let results = foo(&list[first_i+1..],n-1);
- for mut r in results {
- r.push(list[first_i].clone());
- ret.push(r);
- }
- }
- }
- ret
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement