3 // FIXME(generic_associated_types): We almost certaintly want this to pass, but
4 // it's particularly difficult currently, because we need a way of specifying
5 // that `<Self::Base as Functor>::With<T> = Self` without using that when we have
6 // a `U`. See `https://github.com/rust-lang/rust/pull/92728` for a (hacky)
7 // solution. This might be better to just wait for Chalk.
9 #![feature(generic_associated_types)]
14 fn fmap<T, U>(this: Self::With<T>) -> Self::With<U>;
17 pub trait FunctorExt<T>: Sized {
18 type Base: Functor<With<T> = Self>;
21 let arg: <Self::Base as Functor>::With<T>;
22 let ret: <Self::Base as Functor>::With<U>;
25 ret = <Self::Base as Functor>::fmap(arg);
26 //~^ type annotations needed