Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #![feature(existential_type)]
- existential type ClonedIter<'a, T>: Iterator<Item = T>;
- existential type MulIter<I>: Iterator<Item = i32>;
- fn cloned_iter<T: Clone>(x: &[T]) -> ClonedIter<'_, T> {
- x.iter().cloned()
- }
- fn mul_iter<I>(x: I, a: i32) -> MulIter<I>
- where
- I: IntoIterator<Item = i32>,
- {
- x.into_iter().map(move |x| x * a)
- }
- struct Ok<I>(MulIter<I>);
- fn main() {
- let x = cloned_iter(&["Hello", "World"]);
- println!("{}", x.collect::<String>());
- let a = cloned_iter(&[1, 2, 3, 4]);
- let b = mul_iter(a, 3);
- let ok_wrapped = Ok(b);
- for x in ok_wrapped.0 {
- println!("{}", x);
- }
- }
Add Comment
Please, Sign In to add comment