error[E0308]: mismatched types --> $DIR/issue-52893.rs:53:22 | LL | impl AddClass for Class

| - this type parameter ... LL | builder.push(output); | ---- ^^^^^^ expected type parameter `F`, found `Class

` | | | arguments to this method are incorrect | = note: expected type parameter `F` found struct `Class

` help: the return type of this call is `Class

` due to the type of the argument passed --> $DIR/issue-52893.rs:53:9 | LL | builder.push(output); | ^^^^^^^^^^^^^------^ | | | this argument influences the return type of `push` note: associated function defined here --> $DIR/issue-52893.rs:11:8 | LL | fn push(self, other: T) -> Self::PushRes; | ^^^^ error: aborting due to previous error For more information about this error, try `rustc --explain E0308`.