That's just not possible. Generics need to be resolved at compile time. You can have a fixed list of types, write a macro to generate all the possible function calls. But not a runtime list.
Yes, I tried to make the Vector<Box<dyn MyTrait>>, but I also need to serialize the vector to a local file, which I will deserialize later.
So I have to use typetag to make the Box<dyn MyTrait> to be able to serialized and deserialzed. But the trait MyTrait implement by like impl<T: MyTrait<Type1>> My<Type2> for MyStruct<T>, which can not be use #[typetag::serde].
So I have to change the trait MyTrait to have no generic style, and this lead to using Box<dyn MyTrait> everywhere. But I need MyStruct<T> can be accessed to its field by like my_struct.0 or my_struct.0.0, and Box<dyn MyTrait> make this impossible.