если на пальцах то у тебя регистрация имеет вид:
fn register<T, TCurrentState>(...) -> Cons<T, TCurrenState>
и в конце регистрации у тебя получается матрёшка которая знает про все зарегистрированные типы статически.
Для всяких плагинных систем офк это не работает, но мало кто пишет плагинные системы
главное другое - у открытой динамической сущности есть чёткое место возникновение, это функция, мапящая рантайм данные на объекты разных типов, поэтому у нас есть основная точка возникновения рантаймовых интерфейсов