As you have noticed, downcasting only works with Any
trait, and yes, it only supports 'static
data. You can find a recent discussion on why it is so here. Basically, implementing reflection for references of arbitrary lifetimes is difficult.
It is also impossible (as of now, at least) to combine Any
with your custom trait easily. However, a macro library for automatic implementation of Any
for your trait has recently been created. You can also find some discussion on it here.