]> git.proxmox.com Git - rustc.git/blame - src/test/ui/issues/issue-55731.rs
Update unsuspicious file list
[rustc.git] / src / test / ui / issues / issue-55731.rs
CommitLineData
532ac7d7
XL
1use std::marker::PhantomData;
2
3trait DistributedIterator {
4 fn reduce(self)
5 where
6 Self: Sized,
7 {
8 unreachable!()
9 }
10}
11
12trait DistributedIteratorMulti<Source> {
13 type Item;
14}
15
16struct Connect<I>(PhantomData<fn(I)>);
17impl<I: for<'a> DistributedIteratorMulti<&'a ()>> DistributedIterator for Connect<I> where {}
18
19struct Cloned<Source>(PhantomData<fn(Source)>);
20impl<'a, Source> DistributedIteratorMulti<&'a Source> for Cloned<&'a Source> {
21 type Item = ();
22}
23
24struct Map<I, F> {
25 i: I,
26 f: F,
27}
28impl<I: DistributedIteratorMulti<Source>, F, Source> DistributedIteratorMulti<Source> for Map<I, F>
29where
30 F: A<<I as DistributedIteratorMulti<Source>>::Item>,
31{
32 type Item = ();
33}
34
35trait A<B> {}
36
37struct X;
38impl A<()> for X {}
39
40fn multi<I>(_reducer: I)
41where
42 I: for<'a> DistributedIteratorMulti<&'a ()>,
43{
44 DistributedIterator::reduce(Connect::<I>(PhantomData))
45}
46
47fn main() {
48 multi(Map { //~ ERROR implementation of `DistributedIteratorMulti` is not general enough
49 i: Cloned(PhantomData),
50 f: X,
51 });
52}