The GitHub Actions job "Fory CI" on fory.git/main has succeeded.
Run started by GitHub user chaokunyang (triggered by chaokunyang).

Head commit for run:
ba6aecfd7b82a6fce7ff502f2786e8854ffa8b59 / urlyy <[email protected]>
fix(Rust): prevent obtaining generic type metadata on custom types(struct/enum) 
(#3057)

## Why?
Issue #3049 reveals a problem. For example, when serializing the field
`my_vec: Vec<Wrapper<Inner>>`, the current Fory-Rust writes
```
(id: Vec::type_id, generics: [
        ( id: Wrapper<Inner>::type_id, generics: [] )
])
```
That is, the concrete generic type parameters on structs/enums are not
written into the `FieldType` metadata. This results in inconsistent
metadata between the sender and the receiver, and causes
`assign_field_ids()` to assign `remote_field.field_id = -1`, leading to
the issue.


## What does this PR do?
When obtaining the field type on the sender side, for field_type
`Vec<Wrapper<Inner>>`, the `FieldType` objects for `Vec` and
`Wrapper<Inner>` have already been created, so there is no need to
further create a `FieldType` object for `Inner`. Therefore, further
recursion over generic types on structs/enums is truncated in the
runtime.

Meanwhile, because different languages provide different levels of
support for generic types on classes, serializing structs/enums with
generics is `not supported in xlang mode`. A `runtime check` has been
added for this.


## Related issues
Fixes #3049

Report URL: https://github.com/apache/fory/actions/runs/20297548607

With regards,
GitHub Actions via GitBox


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to