Rust doesn’t have reflection, as such. It has some limited facilities (through std::any::Any) for inspecting the type of a value, but no runtime facilities for inspecting the structure of a type in a general way.
Common approaches to genericity in Rust include:
Generics, unsurprisingly. A trait that can store/retrieve values by name and type isn’t terribly hard to design and implement.
Macros.
Procedural macros/custom derives.
All of these approaches address the problem at compile time, not at runtime.
What’s the problem to which “Access fields by name at runtime” is the solution?