Why doesn't trait associated function satisfy these trait bounds

See my answer here. In brief, the output type of my_other_fn doesn't capture the input lifetime on &mut self and is thus a single concrete type for all input lifetimese, whereas the output type of my_fn does capture the input lifetime and is thus a type constructor parameterize by a lifetime (and cannot unify with a type variable like B).

If it's still not clear, let me know.