How to avoid using Enumerable.impl_for

Thanks all for your answers I guess the main point here is that the struct name may be pattern matched as any other value in the map.
Any opinions on guards that filter protocols rather than specific types?