标签: dynamic struct rust field
struct Test; // here must be code to overload the standard field resolution methods fn main() { let t = Test; println!("I wanna catch request for unknown struct field {}", t.unexpected_field) }
答案 0 :(得分:5)
没有。 Rust是一种静态编译的语言;一切都必须在编译时解决。字段存在或不存在。
即使该字段确实存在,您也不会知道它是什么类型,因此您不会知道它上面存在哪些方法。编译器不知道该字段的大小,因此它不能为结构分配空间。
您更有可能想要使用Option:
Option
struct Test { unexpected_field: Option<i32>, }
或者您可以切换到HashMap。
HashMap
编辑,这是一个巨大的理由,有一个静态编译的语言,这是一件好事。