The mismatch isn’t about the associated type, it’s about the actual, underlying type. One is a Map and one is a Filter. It’s not possible to determine which is returned, so you inherently need dynamic dispatch.
There is some discussion about it possibly being sugar for an anonymous enum in the future, but that’s not what it is right now.