Guest User

Untitled

a guest
Jun 24th, 2018
67
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.58 KB | None | 0 0
  1. fn cartesian<F, G, I, J, T, U>(x: F, y: G) -> Vec<(T, U)>
  2. where
  3. I: IntoIterator<Item=T>,
  4. J: IntoIterator<Item=U>,
  5. F: Fn() -> I,
  6. G: Fn() -> J,
  7. T: Clone
  8. {
  9. x().into_iter().map(
  10. |xp| y().into_iter().map(
  11. move |yp| (xp.clone(), yp)
  12. )
  13. ).flat_map(|i| i).collect()
  14. }
  15.  
  16. fn main() {
  17. let v1 = vec![String::from("foo"), String::from("bar")];
  18. let v2 = vec![String::from("baz"), String::from("qux")];
  19.  
  20. let it = cartesian(|| v1.iter(), || v2.iter());
  21.  
  22. for item in it {
  23. let (s1, s2) = item;
  24. println!("{} {}", s1, s2)
  25. }
  26. }
Add Comment
Please, Sign In to add comment