Fedor Telnov created AVRO-3759:
----------------------------------
Summary: [Rust] Schema types inconsistency
Key: AVRO-3759
URL: https://issues.apache.org/jira/browse/AVRO-3759
Project: Apache Avro
Issue Type: Improvement
Components: rust
Reporter: Fedor Telnov
That is how Unions and Records are defined in apache-avro Rust crate:
```
/// A `union` Avro schema.
Union(UnionSchema),
/// A `record` Avro schema.
///
/// The `lookup` table maps field names to their position in the `Vec`
/// of `fields`.
Record {
name: Name,
aliases: Aliases,
doc: Documentation,
fields: Vec<RecordField>,
lookup: BTreeMap<String, usize>,
},
```
That is inconsistent - one variant is defined with pattern Type(Type) which is
VERY convenient(for instance, it allows one to use UnionSchema as type), and
the other one(Record) is simply a struct variant, which is not very convenient.
My proposition is to hide Record's body in RecordSchema type and use it here -
just as you do with union. That would significantly help users, as we can't use
enum variants as types in Rust. It can also be done with other schema types as
well.
--
This message was sent by Atlassian Jira
(v8.20.10#820010)