| #![feature(rustdoc_internals)] |
| |
| pub trait MyTrait2<X> { |
| type Output; |
| } |
| |
| pub trait MyTrait { |
| type Item; |
| fn next(&mut self) -> Option<Self::Item>; |
| fn fold<B, F>(self, init: B, f: F) -> B |
| where |
| Self: Sized, |
| F: MyTrait2<(B, Self::Item), Output = B>; |
| } |
| |
| pub struct Cloned<I>(I); |
| |
| impl<'a, T, I> MyTrait for Cloned<I> |
| where |
| T: 'a + Clone, |
| I: MyTrait<Item = &'a T>, |
| { |
| type Item = T; |
| fn next(&mut self) -> Option<Self::Item> { |
| loop {} |
| } |
| fn fold<B, F>(self, init: B, f: F) -> B |
| where |
| Self: Sized, |
| F: MyTrait2<(B, Self::Item), Output = B>, |
| { |
| loop {} |
| } |
| } |
| |
| #[doc(search_unbox)] |
| pub trait MyFuture { |
| type Output; |
| } |
| |
| #[doc(search_unbox)] |
| pub trait MyIntoFuture { |
| type Output; |
| type Fut: MyFuture<Output = Self::Output>; |
| fn into_future(self) -> Self::Fut; |
| fn into_future_2(self, other: Self) -> Self::Fut; |
| } |