1 use std::marker::PhantomData;
3 trait DistributedIterator {
12 trait DistributedIteratorMulti<Source> {
16 struct Connect<I>(PhantomData<fn(I)>);
17 impl<I: for<'a> DistributedIteratorMulti<&'a ()>> DistributedIterator for Connect<I> where {}
19 struct Cloned<Source>(PhantomData<fn(Source)>);
20 impl<'a, Source> DistributedIteratorMulti<&'a Source> for Cloned<&'a Source> {
28 impl<I: DistributedIteratorMulti<Source>, F, Source> DistributedIteratorMulti<Source> for Map<I, F>
30 F: A<<I as DistributedIteratorMulti<Source>>::Item>,
40 fn multi<I>(_reducer: I)
42 I: for<'a> DistributedIteratorMulti<&'a ()>,
44 DistributedIterator::reduce(Connect::<I>(PhantomData))
48 multi(Map { //~ ERROR implementation of `DistributedIteratorMulti` is not general enough
49 i: Cloned(PhantomData),