You could introduce a second trait which is implemented for all T: Trait and who's associated_function() method (which takes &self) just calls <Self as Trait>::associated_function().
That way the second trait can act as an object-safe trampoline to the real implementation.
I don’t know why, but the compiler still requires my trait be object safe (E0038) additionally that implies to have a third trait that combine the two others for functions arguments.