// check-fail // known-bug: unknown // We almost certainly want this to pass, but // it's particularly difficult currently, because we need a way of specifying // that `::With = Self` without using that when we have // a `U`. See `https://github.com/rust-lang/rust/pull/92728` for a (hacky) // solution. This might be better to just wait for Chalk. pub trait Functor { type With; fn fmap(this: Self::With) -> Self::With; } pub trait FunctorExt: Sized { type Base: Functor = Self>; fn fmap(self) { let arg: ::With; let ret: ::With; arg = self; ret = ::fmap(arg); } } fn main() {}