通过给定字符串访问struct字段

通过给定字符串访问struct字段,struct,rust,Struct,Rust,假设我们有一个字段使用的Personstruct和PersonNamestruct,如下所示: struct-Person{ 姓名:人名, 年龄:u8, } 结构人名{ 名称:String, 中间名称:选项, 姓氏:选项, } 创建结构: let foo=Person{name:PersonName{name:String::from(“bar”),中间名:None,姓氏:String::from(“baz”)},年龄:16u8}; 如何使用此字符串访问其中指定的struct字段 让foo_

假设我们有一个字段使用的
Person
struct和
PersonName
struct,如下所示:

struct-Person{
姓名:人名,
年龄:u8,
}
结构人名{
名称:String,
中间名称:选项,
姓氏:选项,
}
创建结构:

let foo=Person{name:PersonName{name:String::from(“bar”),中间名:None,姓氏:String::from(“baz”)},年龄:16u8};
如何使用此字符串访问其中指定的struct字段

让foo_姓氏=eval(“name.name”)//返回“baz”
//结构计算器返回特定字段的值
//即:字段路径:“我的结构字段。子字段1。子字段1”
fn eval(字段路径:字符串)->…{}

如果不编写自定义评估器,有没有办法做到这一点?

没有办法做到这一点。
Rust是一种静态编译语言,在程序运行时这种信息不再存在。

您可以通过创建自己的trait并为此trait创建自己的派生宏来实现这一点。但在这里描述起来非常复杂。