Guest User

Untitled

a guest
Jun 24th, 2018
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.56 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. {
  8. x().into_iter().map(
  9. |xp| y().into_iter().map(
  10. |yp| (xp, yp)
  11. )
  12. ).flat_map(|i| i).collect()
  13. }
  14.  
  15. fn main() {
  16. let v1 = vec![String::from("foo"), String::from("bar")];
  17. let v2 = vec![String::from("baz"), String::from("qux")];
  18.  
  19. let it = cartesian(|| v1.iter(), || v2.iter());
  20.  
  21. for item in it {
  22. let (s1, s2) = item;
  23. println!("{} {}", s1, s2)
  24. }
  25. }
Add Comment
Please, Sign In to add comment