Guest User

Untitled

a guest
Jul 22nd, 2018
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.62 KB | None | 0 0
  1. #![feature(existential_type)]
  2.  
  3. existential type ClonedIter<'a, T>: Iterator<Item = T>;
  4. existential type MulIter<I>: Iterator<Item = i32>;
  5.  
  6. fn cloned_iter<T: Clone>(x: &[T]) -> ClonedIter<'_, T> {
  7. x.iter().cloned()
  8. }
  9.  
  10. fn mul_iter<I>(x: I, a: i32) -> MulIter<I>
  11. where
  12. I: IntoIterator<Item = i32>,
  13. {
  14. x.into_iter().map(move |x| x * a)
  15. }
  16.  
  17. struct Ok<I>(MulIter<I>);
  18.  
  19. fn main() {
  20. let x = cloned_iter(&["Hello", "World"]);
  21. println!("{}", x.collect::<String>());
  22.  
  23. let a = cloned_iter(&[1, 2, 3, 4]);
  24. let b = mul_iter(a, 3);
  25. let ok_wrapped = Ok(b);
  26. for x in ok_wrapped.0 {
  27. println!("{}", x);
  28. }
  29. }
Add Comment
Please, Sign In to add comment