Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- fn cartesian<I, J, T, U>(x: I, y: J) -> Vec<(T, U)>
- where
- I: IntoIterator<Item=T>,
- T: Clone,
- J: IntoIterator<Item=U>,
- J::IntoIter: Clone,
- U: Clone,
- {
- let y = y.into_iter();
- x.into_iter().map(
- |xp| y.clone().map(
- move |yp| (xp.clone(), yp)
- )
- ).flat_map(|i| i).collect()
- }
- fn main() {
- let v1 = vec![String::from("foo"), String::from("bar")];
- let v2 = vec![String::from("baz"), String::from("qux")];
- let it = cartesian(v1.iter(), v2.iter());
- for item in it {
- let (s1, s2) = item;
- println!("{} {}", s1, s2)
- }
- }
Add Comment
Please, Sign In to add comment