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