有没有办法捕捉未知的结构域?

时间:2017-10-10 13:08:26

标签: 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)
}

1 个答案:

答案 0 :(得分:5)

没有。 Rust是一种静态编译的语言;一切都必须在编译时解决。字段存在或不存在。

即使该字段确实存在,您也不会知道它是什么类型,因此您不会知道它上面存在哪些方法。编译器不知道该字段的大小,因此它不能为结构分配空间。

您更有可能想要使用Option

struct Test {
    unexpected_field: Option<i32>,
}

或者您可以切换到HashMap

编辑,这是一个巨大的理由,有一个静态编译的语言,这是一件好事。