diff --git a/src/idl_gen_rust.cpp b/src/idl_gen_rust.cpp index 55b8439b6..cece22120 100644 --- a/src/idl_gen_rust.cpp +++ b/src/idl_gen_rust.cpp @@ -1350,9 +1350,17 @@ class RustGenerator : public BaseGenerator { code_ += " if self.{{FIELD_TYPE_FIELD_NAME}}_type() == " "{{U_ELEMENT_ENUM_TYPE}} {"; - code_ += + + // The following logic is not tested in the integration test, + // as of April 10, 2020 + if (field.required) { + code_ += " let u = self.{{FIELD_NAME}}();"; + code_ += " Some({{U_ELEMENT_TABLE_TYPE}}::init_from_table(u))"; + } else { + code_ += " self.{{FIELD_NAME}}().map(|u| " "{{U_ELEMENT_TABLE_TYPE}}::init_from_table(u))"; + } code_ += " } else {"; code_ += " None"; code_ += " }";