error[E0277]: the trait bound `::Base: Functor` is not satisfied --> $DIR/method-chain-gats.rs:18:20 | LL | input.fmap(f1).fmap(f2) | ^^^^ the trait `Functor` is not implemented for `::Base` | note: the method call chain might not have had the expected associated types --> $DIR/method-chain-gats.rs:13:29 | LL | fn fmap2(input: T, f1: impl Fn(A) -> B, f2: impl Fn(B) -> C) -> T::Base | ^ `Base::Base` is `::Base<_>` here note: required by a bound in `Functor::fmap` --> $DIR/method-chain-gats.rs:10:24 | LL | fn fmap(self, f: impl Fn(A) -> B) -> Self::Base | ---- required by a bound in this associated function LL | where LL | Self::Base: Functor; | ^^^^^^^^^^ required by this bound in `Functor::fmap` help: consider further restricting the associated type | LL | T::Base: Functor = T::Base>, ::Base: Functor | ++++++++++++++++++++++++++++++++ error: aborting due to 1 previous error For more information about this error, try `rustc --explain E0277`.