Kriskras99 opened a new pull request, #229: URL: https://github.com/apache/avro-rs/pull/229
This PR shrinks the error type by 32 bytes to 72 bytes, saving 32 bytes of stack/registers for every function returning a `Result<_, Error>`. The new largest variant is `GetDefaultRecordField` at 72 bytes. This is still quite large, but I'm not sure how to change `GetDefaultRecordField`. The third `String` can be a `Box<Schema>` which would shrink it to 64 bytes but would require rewriting a few tests. Another option is making it `Box<String>, Box<String>, Box<String>` which is 24 bytes (or `Box<str>, Box<str>, Box<str>` which is more idiomatic but is 48 bytes). @martin-g feel free to add commits to this PR to shrink more types. Old: <details> <summary>-Zprint-type-sizes output for the Error type</summary> From `RUSTFLAGS=-Zprint-type-sizes cargo +nightly build --release > types.txt` ``` print-type-size type: `error::Error`: 104 bytes, alignment: 8 bytes print-type-size variant `FindUnionVariant`: 104 bytes print-type-size field `.schema`: 48 bytes print-type-size field `.value`: 56 bytes print-type-size variant `ValidationWithReason`: 96 bytes print-type-size padding: 8 bytes print-type-size field `.reason`: 24 bytes, alignment: 8 bytes print-type-size field `.value`: 56 bytes print-type-size field `.schema`: 8 bytes print-type-size variant `GetRecord`: 88 bytes print-type-size padding: 8 bytes print-type-size field `.expected`: 24 bytes, alignment: 8 bytes print-type-size field `.other`: 56 bytes print-type-size variant `GetDefaultRecordField`: 80 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 24 bytes, alignment: 8 bytes print-type-size field `.1`: 24 bytes print-type-size field `.2`: 24 bytes print-type-size variant `GetArray`: 65 bytes print-type-size padding: 8 bytes print-type-size field `.other`: 56 bytes, alignment: 8 bytes print-type-size field `.expected`: 1 bytes print-type-size variant `GetMap`: 65 bytes print-type-size padding: 8 bytes print-type-size field `.other`: 56 bytes, alignment: 8 bytes print-type-size field `.expected`: 1 bytes print-type-size variant `FixedValue`: 64 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 56 bytes, alignment: 8 bytes print-type-size variant `BytesValue`: 64 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 56 bytes, alignment: 8 bytes print-type-size variant `GetUuidFromStringValue`: 64 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 56 bytes, alignment: 8 bytes print-type-size variant `GetUuid`: 64 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 56 bytes, alignment: 8 bytes print-type-size variant `GetBigDecimal`: 64 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 56 bytes, alignment: 8 bytes print-type-size variant `ResolveDuration`: 64 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 56 bytes, alignment: 8 bytes print-type-size variant `ResolveDecimal`: 64 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 56 bytes, alignment: 8 bytes print-type-size variant `GetU8`: 64 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 56 bytes, alignment: 8 bytes print-type-size variant `GetDate`: 64 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 56 bytes, alignment: 8 bytes print-type-size variant `GetTimeMillis`: 64 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 56 bytes, alignment: 8 bytes print-type-size variant `GetTimeMicros`: 64 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 56 bytes, alignment: 8 bytes print-type-size variant `GetTimestampMillis`: 64 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 56 bytes, alignment: 8 bytes print-type-size variant `GetTimestampMicros`: 64 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 56 bytes, alignment: 8 bytes print-type-size variant `GetTimestampNanos`: 64 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 56 bytes, alignment: 8 bytes print-type-size variant `GetLocalTimestampMillis`: 64 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 56 bytes, alignment: 8 bytes print-type-size variant `GetLocalTimestampMicros`: 64 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 56 bytes, alignment: 8 bytes print-type-size variant `GetLocalTimestampNanos`: 64 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 56 bytes, alignment: 8 bytes print-type-size variant `GetNull`: 64 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 56 bytes, alignment: 8 bytes print-type-size variant `GetBoolean`: 64 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 56 bytes, alignment: 8 bytes print-type-size variant `GetInt`: 64 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 56 bytes, alignment: 8 bytes print-type-size variant `GetLong`: 64 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 56 bytes, alignment: 8 bytes print-type-size variant `GetDouble`: 64 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 56 bytes, alignment: 8 bytes print-type-size variant `GetFloat`: 64 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 56 bytes, alignment: 8 bytes print-type-size variant `GetBytes`: 64 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 56 bytes, alignment: 8 bytes print-type-size variant `GetString`: 64 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 56 bytes, alignment: 8 bytes print-type-size variant `GetEnum`: 64 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 56 bytes, alignment: 8 bytes print-type-size variant `GetStringForFixed`: 64 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 56 bytes, alignment: 8 bytes print-type-size variant `GetDecimalMetadataValueFromJson`: 64 bytes print-type-size padding: 8 bytes print-type-size field `.key`: 24 bytes, alignment: 8 bytes print-type-size field `.value`: 32 bytes print-type-size variant `GetEnumDefault`: 56 bytes print-type-size padding: 8 bytes print-type-size field `.symbol`: 24 bytes, alignment: 8 bytes print-type-size field `.symbols`: 24 bytes print-type-size variant `SingleObjectHeaderMismatch`: 56 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 24 bytes, alignment: 8 bytes print-type-size field `.1`: 24 bytes print-type-size variant `SerializeValueWithSchema`: 56 bytes print-type-size padding: 8 bytes print-type-size field `.value`: 24 bytes, alignment: 8 bytes print-type-size field `.value_type`: 16 bytes print-type-size field `.schema`: 8 bytes print-type-size variant `SchemaResolutionError`: 56 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 48 bytes, alignment: 8 bytes print-type-size variant `AmbiguousSchemaDefinition`: 56 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 48 bytes, alignment: 8 bytes print-type-size variant `NoEntryInLookupTable`: 56 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 24 bytes, alignment: 8 bytes print-type-size field `.1`: 24 bytes print-type-size variant `ConvertToUtf8`: 48 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 40 bytes, alignment: 8 bytes print-type-size variant `InvalidSchemaName`: 48 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 24 bytes, alignment: 8 bytes print-type-size field `.1`: 16 bytes print-type-size variant `InvalidNamespace`: 48 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 24 bytes, alignment: 8 bytes print-type-size field `.1`: 16 bytes print-type-size variant `ConvertStrToUuid`: 40 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 32 bytes, alignment: 8 bytes print-type-size variant `ConvertSliceToUuid`: 40 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 32 bytes, alignment: 8 bytes print-type-size variant `GetLogicalTypeVariant`: 40 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 32 bytes, alignment: 8 bytes print-type-size variant `GetLogicalTypeFieldType`: 40 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 32 bytes, alignment: 8 bytes print-type-size variant `GetComplexType`: 40 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 32 bytes, alignment: 8 bytes print-type-size variant `EnumDefaultWrongType`: 40 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 32 bytes, alignment: 8 bytes print-type-size variant `GetFixedSizeFieldPositive`: 40 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 32 bytes, alignment: 8 bytes print-type-size variant `SerializeRecordFieldWithSchema`: 40 bytes print-type-size padding: 8 bytes print-type-size field `.field_name`: 16 bytes, alignment: 8 bytes print-type-size field `.record_schema`: 8 bytes print-type-size field `.error`: 8 bytes print-type-size variant `UuidFromSlice`: 40 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 32 bytes, alignment: 8 bytes print-type-size variant `EncodeValueAsSchemaError`: 33 bytes print-type-size padding: 8 bytes print-type-size field `.supported_schema`: 24 bytes, alignment: 8 bytes print-type-size field `.value_kind`: 1 bytes print-type-size variant `NameCollision`: 32 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 24 bytes, alignment: 8 bytes print-type-size variant `GetEnumSymbol`: 32 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 24 bytes, alignment: 8 bytes print-type-size variant `GetField`: 32 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 24 bytes, alignment: 8 bytes print-type-size variant `ParsePrimitive`: 32 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 24 bytes, alignment: 8 bytes print-type-size variant `EnumSymbolName`: 32 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 24 bytes, alignment: 8 bytes print-type-size variant `FieldName`: 32 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 24 bytes, alignment: 8 bytes print-type-size variant `FieldNameDuplicate`: 32 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 24 bytes, alignment: 8 bytes print-type-size variant `InvalidSchemaRecord`: 32 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 24 bytes, alignment: 8 bytes print-type-size variant `EnumSymbolDuplicate`: 32 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 24 bytes, alignment: 8 bytes print-type-size variant `SerializeValue`: 32 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 24 bytes, alignment: 8 bytes print-type-size variant `DeserializeValue`: 32 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 24 bytes, alignment: 8 bytes print-type-size variant `InvalidMetadataKey`: 32 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 24 bytes, alignment: 8 bytes print-type-size variant `CodecNotSupported`: 32 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 24 bytes, alignment: 8 bytes print-type-size variant `ConvertToUtf8Error`: 24 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 16 bytes, alignment: 8 bytes print-type-size variant `MemoryAllocation`: 24 bytes print-type-size padding: 8 bytes print-type-size field `.desired`: 8 bytes, alignment: 8 bytes print-type-size field `.maximum`: 8 bytes print-type-size variant `SignExtend`: 24 bytes print-type-size padding: 8 bytes print-type-size field `.requested`: 8 bytes, alignment: 8 bytes print-type-size field `.needed`: 8 bytes print-type-size variant `ReadFixed`: 24 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size field `.1`: 8 bytes print-type-size variant `GetUnionVariant`: 24 bytes print-type-size padding: 8 bytes print-type-size field `.index`: 8 bytes, alignment: 8 bytes print-type-size field `.num_variants`: 8 bytes print-type-size variant `EnumSymbolIndex`: 24 bytes print-type-size padding: 8 bytes print-type-size field `.index`: 8 bytes, alignment: 8 bytes print-type-size field `.num_variants`: 8 bytes print-type-size variant `GetScaleAndPrecision`: 24 bytes print-type-size padding: 8 bytes print-type-size field `.scale`: 8 bytes, alignment: 8 bytes print-type-size field `.precision`: 8 bytes print-type-size variant `GetScaleWithFixedSize`: 24 bytes print-type-size padding: 8 bytes print-type-size field `.size`: 8 bytes, alignment: 8 bytes print-type-size field `.precision`: 8 bytes print-type-size variant `ComparePrecisionAndSize`: 24 bytes print-type-size padding: 8 bytes print-type-size field `.precision`: 8 bytes, alignment: 8 bytes print-type-size field `.num_bytes`: 8 bytes print-type-size variant `CompareFixedSizes`: 24 bytes print-type-size padding: 8 bytes print-type-size field `.size`: 8 bytes, alignment: 8 bytes print-type-size field `.n`: 8 bytes print-type-size variant `GetEnumValue`: 24 bytes print-type-size padding: 8 bytes print-type-size field `.index`: 8 bytes, alignment: 8 bytes print-type-size field `.nsymbols`: 8 bytes print-type-size variant `GetDecimalMetadataFromJson`: 24 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 16 bytes, alignment: 8 bytes print-type-size variant `GetU64FromJson`: 24 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 16 bytes, alignment: 8 bytes print-type-size variant `GetI64FromJson`: 24 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 16 bytes, alignment: 8 bytes print-type-size variant `GetPrecisionOrScaleFromJson`: 24 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 16 bytes, alignment: 8 bytes print-type-size variant `DecimalPrecisionLessThanScale`: 24 bytes print-type-size padding: 8 bytes print-type-size field `.precision`: 8 bytes, alignment: 8 bytes print-type-size field `.scale`: 8 bytes print-type-size variant `FixedDefaultLenSizeMismatch`: 24 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size field `.1`: 8 bytes print-type-size variant `EncodeDecimalAsFixedError`: 24 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size field `.1`: 8 bytes print-type-size variant `SnappyCrc32`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.expected`: 4 bytes, alignment: 4 bytes print-type-size field `.actual`: 4 bytes print-type-size variant `ReadBoolean`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `ReadBytes`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `ReadString`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `ReadDouble`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `ReadFloat`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `ReadDuration`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `ConvertFixedToUuid`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `GetDecimalFixedBytes`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `ConvertLengthToI32`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.1`: 8 bytes, alignment: 8 bytes print-type-size field `.0`: 0 bytes print-type-size variant `ConvertU64ToUsize`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.1`: 8 bytes, alignment: 8 bytes print-type-size field `.0`: 0 bytes print-type-size variant `ConvertI64ToUsize`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.1`: 8 bytes, alignment: 8 bytes print-type-size field `.0`: 0 bytes print-type-size variant `ParseSchemaJson`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `ReadSchemaFromReader`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `DecimalPrecisionMuBePositive`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.precision`: 8 bytes, alignment: 8 bytes print-type-size variant `BigDecimalLen`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `DeflateCompress`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `DeflateCompressFinish`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `DeflateDecompress`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `ZstdCompress`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `ZstdDecompress`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `ReadHeader`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `ReadMarker`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `ReadBlockMarker`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `ReadIntoBuf`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `ReadVariableIntegerBytes`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `ZagI32`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.1`: 8 bytes, alignment: 8 bytes print-type-size field `.0`: 0 bytes print-type-size variant `WriteBytes`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `FlushWriter`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `WriteMarker`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `ConvertJsonToString`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `ConvertF64ToJson`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `ConvertU32ToUsize`: 12 bytes print-type-size padding: 8 bytes print-type-size field `.1`: 4 bytes, alignment: 4 bytes print-type-size field `.0`: 0 bytes print-type-size variant `ConvertI32ToUsize`: 12 bytes print-type-size padding: 8 bytes print-type-size field `.1`: 4 bytes, alignment: 4 bytes print-type-size field `.0`: 0 bytes print-type-size variant `GetDefaultUnion`: 10 bytes print-type-size padding: 8 bytes print-type-size field `.1`: 1 bytes, alignment: 1 bytes print-type-size field `.0`: 1 bytes print-type-size variant `BoolValue`: 9 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 1 bytes, alignment: 1 bytes print-type-size variant `ResolveDecimalSchema`: 9 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 1 bytes, alignment: 1 bytes print-type-size variant `MapKeyType`: 9 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 1 bytes, alignment: 1 bytes print-type-size variant `Validation`: 0 bytes print-type-size variant `GetEnumUnknownIndexValue`: 0 bytes print-type-size variant `EmptyUnion`: 0 bytes print-type-size variant `GetNameField`: 0 bytes print-type-size variant `GetNameFieldFromRecord`: 0 bytes print-type-size variant `GetNestedUnion`: 0 bytes print-type-size variant `GetUnionDuplicate`: 0 bytes print-type-size variant `ParseSchemaFromValidJson`: 0 bytes print-type-size variant `BigDecimalSign`: 0 bytes print-type-size variant `BigDecimalScale`: 0 bytes print-type-size variant `GetLogicalTypeField`: 0 bytes print-type-size variant `GetComplexTypeField`: 0 bytes print-type-size variant `GetRecordFieldsJson`: 0 bytes print-type-size variant `GetEnumSymbolsField`: 0 bytes print-type-size variant `GetEnumSymbols`: 0 bytes print-type-size variant `GetArrayItemsField`: 0 bytes print-type-size variant `GetMapValuesField`: 0 bytes print-type-size variant `GetFixedSizeField`: 0 bytes print-type-size variant `HeaderMagic`: 0 bytes print-type-size variant `GetAvroSchemaFromMap`: 0 bytes print-type-size variant `GetHeaderMetadata`: 0 bytes print-type-size variant `GetBlockMarker`: 0 bytes print-type-size variant `IntegerOverflow`: 0 bytes print-type-size variant `ReadBlock`: 0 bytes print-type-size variant `FileHeaderAlreadyWritten`: 0 bytes print-type-size variant `IllegalSingleObjectWriterState`: 0 bytes print-type-size variant `BadCodecMetadata`: 0 bytes ``` </details> New: <details> <summary>-Zprint-type-sizes output for the Error type</summary> From `RUSTFLAGS=-Zprint-type-sizes cargo +nightly build --release > types.txt` ``` print-type-size type: `error::Error`: 72 bytes, alignment: 8 bytes print-type-size variant `GetDefaultRecordField`: 72 bytes print-type-size field `.0`: 24 bytes print-type-size field `.1`: 24 bytes print-type-size field `.2`: 24 bytes print-type-size variant `FindUnionVariant`: 64 bytes print-type-size padding: 8 bytes print-type-size field `.schema`: 48 bytes, alignment: 8 bytes print-type-size field `.value`: 8 bytes print-type-size variant `GetDecimalMetadataValueFromJson`: 64 bytes print-type-size padding: 8 bytes print-type-size field `.key`: 24 bytes, alignment: 8 bytes print-type-size field `.value`: 32 bytes print-type-size variant `GetEnumDefault`: 56 bytes print-type-size padding: 8 bytes print-type-size field `.symbol`: 24 bytes, alignment: 8 bytes print-type-size field `.symbols`: 24 bytes print-type-size variant `SingleObjectHeaderMismatch`: 56 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 24 bytes, alignment: 8 bytes print-type-size field `.1`: 24 bytes print-type-size variant `SerializeValueWithSchema`: 56 bytes print-type-size padding: 8 bytes print-type-size field `.value`: 24 bytes, alignment: 8 bytes print-type-size field `.value_type`: 16 bytes print-type-size field `.schema`: 8 bytes print-type-size variant `SchemaResolutionError`: 56 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 48 bytes, alignment: 8 bytes print-type-size variant `AmbiguousSchemaDefinition`: 56 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 48 bytes, alignment: 8 bytes print-type-size variant `NoEntryInLookupTable`: 56 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 24 bytes, alignment: 8 bytes print-type-size field `.1`: 24 bytes print-type-size variant `ConvertToUtf8`: 48 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 40 bytes, alignment: 8 bytes print-type-size variant `ValidationWithReason`: 48 bytes print-type-size padding: 8 bytes print-type-size field `.reason`: 24 bytes, alignment: 8 bytes print-type-size field `.value`: 8 bytes print-type-size field `.schema`: 8 bytes print-type-size variant `InvalidSchemaName`: 48 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 24 bytes, alignment: 8 bytes print-type-size field `.1`: 16 bytes print-type-size variant `InvalidNamespace`: 48 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 24 bytes, alignment: 8 bytes print-type-size field `.1`: 16 bytes print-type-size variant `ConvertStrToUuid`: 40 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 32 bytes, alignment: 8 bytes print-type-size variant `ConvertSliceToUuid`: 40 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 32 bytes, alignment: 8 bytes print-type-size variant `GetRecord`: 40 bytes print-type-size padding: 8 bytes print-type-size field `.expected`: 24 bytes, alignment: 8 bytes print-type-size field `.other`: 8 bytes print-type-size variant `GetLogicalTypeVariant`: 40 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 32 bytes, alignment: 8 bytes print-type-size variant `GetLogicalTypeFieldType`: 40 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 32 bytes, alignment: 8 bytes print-type-size variant `GetComplexType`: 40 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 32 bytes, alignment: 8 bytes print-type-size variant `EnumDefaultWrongType`: 40 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 32 bytes, alignment: 8 bytes print-type-size variant `GetFixedSizeFieldPositive`: 40 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 32 bytes, alignment: 8 bytes print-type-size variant `SerializeRecordFieldWithSchema`: 40 bytes print-type-size padding: 8 bytes print-type-size field `.field_name`: 16 bytes, alignment: 8 bytes print-type-size field `.record_schema`: 8 bytes print-type-size field `.error`: 8 bytes print-type-size variant `UuidFromSlice`: 40 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 32 bytes, alignment: 8 bytes print-type-size variant `EncodeValueAsSchemaError`: 33 bytes print-type-size padding: 8 bytes print-type-size field `.supported_schema`: 24 bytes, alignment: 8 bytes print-type-size field `.value_kind`: 1 bytes print-type-size variant `NameCollision`: 32 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 24 bytes, alignment: 8 bytes print-type-size variant `GetEnumSymbol`: 32 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 24 bytes, alignment: 8 bytes print-type-size variant `GetField`: 32 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 24 bytes, alignment: 8 bytes print-type-size variant `ParsePrimitive`: 32 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 24 bytes, alignment: 8 bytes print-type-size variant `EnumSymbolName`: 32 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 24 bytes, alignment: 8 bytes print-type-size variant `FieldName`: 32 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 24 bytes, alignment: 8 bytes print-type-size variant `FieldNameDuplicate`: 32 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 24 bytes, alignment: 8 bytes print-type-size variant `InvalidSchemaRecord`: 32 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 24 bytes, alignment: 8 bytes print-type-size variant `EnumSymbolDuplicate`: 32 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 24 bytes, alignment: 8 bytes print-type-size variant `SerializeValue`: 32 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 24 bytes, alignment: 8 bytes print-type-size variant `DeserializeValue`: 32 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 24 bytes, alignment: 8 bytes print-type-size variant `InvalidMetadataKey`: 32 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 24 bytes, alignment: 8 bytes print-type-size variant `CodecNotSupported`: 32 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 24 bytes, alignment: 8 bytes print-type-size variant `ConvertToUtf8Error`: 24 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 16 bytes, alignment: 8 bytes print-type-size variant `MemoryAllocation`: 24 bytes print-type-size padding: 8 bytes print-type-size field `.desired`: 8 bytes, alignment: 8 bytes print-type-size field `.maximum`: 8 bytes print-type-size variant `SignExtend`: 24 bytes print-type-size padding: 8 bytes print-type-size field `.requested`: 8 bytes, alignment: 8 bytes print-type-size field `.needed`: 8 bytes print-type-size variant `ReadFixed`: 24 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size field `.1`: 8 bytes print-type-size variant `GetUnionVariant`: 24 bytes print-type-size padding: 8 bytes print-type-size field `.index`: 8 bytes, alignment: 8 bytes print-type-size field `.num_variants`: 8 bytes print-type-size variant `EnumSymbolIndex`: 24 bytes print-type-size padding: 8 bytes print-type-size field `.index`: 8 bytes, alignment: 8 bytes print-type-size field `.num_variants`: 8 bytes print-type-size variant `GetScaleAndPrecision`: 24 bytes print-type-size padding: 8 bytes print-type-size field `.scale`: 8 bytes, alignment: 8 bytes print-type-size field `.precision`: 8 bytes print-type-size variant `GetScaleWithFixedSize`: 24 bytes print-type-size padding: 8 bytes print-type-size field `.size`: 8 bytes, alignment: 8 bytes print-type-size field `.precision`: 8 bytes print-type-size variant `ComparePrecisionAndSize`: 24 bytes print-type-size padding: 8 bytes print-type-size field `.precision`: 8 bytes, alignment: 8 bytes print-type-size field `.num_bytes`: 8 bytes print-type-size variant `CompareFixedSizes`: 24 bytes print-type-size padding: 8 bytes print-type-size field `.size`: 8 bytes, alignment: 8 bytes print-type-size field `.n`: 8 bytes print-type-size variant `GetEnumValue`: 24 bytes print-type-size padding: 8 bytes print-type-size field `.index`: 8 bytes, alignment: 8 bytes print-type-size field `.nsymbols`: 8 bytes print-type-size variant `GetDecimalMetadataFromJson`: 24 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 16 bytes, alignment: 8 bytes print-type-size variant `GetU64FromJson`: 24 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 16 bytes, alignment: 8 bytes print-type-size variant `GetI64FromJson`: 24 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 16 bytes, alignment: 8 bytes print-type-size variant `GetPrecisionOrScaleFromJson`: 24 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 16 bytes, alignment: 8 bytes print-type-size variant `DecimalPrecisionLessThanScale`: 24 bytes print-type-size padding: 8 bytes print-type-size field `.precision`: 8 bytes, alignment: 8 bytes print-type-size field `.scale`: 8 bytes print-type-size variant `FixedDefaultLenSizeMismatch`: 24 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size field `.1`: 8 bytes print-type-size variant `EncodeDecimalAsFixedError`: 24 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size field `.1`: 8 bytes print-type-size variant `GetArray`: 17 bytes print-type-size padding: 8 bytes print-type-size field `.other`: 8 bytes, alignment: 8 bytes print-type-size field `.expected`: 1 bytes print-type-size variant `GetMap`: 17 bytes print-type-size padding: 8 bytes print-type-size field `.other`: 8 bytes, alignment: 8 bytes print-type-size field `.expected`: 1 bytes print-type-size variant `SnappyCrc32`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.expected`: 4 bytes, alignment: 4 bytes print-type-size field `.actual`: 4 bytes print-type-size variant `FixedValue`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `BytesValue`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `GetUuidFromStringValue`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `ReadBoolean`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `ReadBytes`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `ReadString`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `ReadDouble`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `ReadFloat`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `ReadDuration`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `ConvertFixedToUuid`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `GetUuid`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `GetBigDecimal`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `GetDecimalFixedBytes`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `ResolveDuration`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `ResolveDecimal`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `GetU8`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `ConvertLengthToI32`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.1`: 8 bytes, alignment: 8 bytes print-type-size field `.0`: 0 bytes print-type-size variant `GetDate`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `GetTimeMillis`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `GetTimeMicros`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `GetTimestampMillis`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `GetTimestampMicros`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `GetTimestampNanos`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `GetLocalTimestampMillis`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `GetLocalTimestampMicros`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `GetLocalTimestampNanos`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `GetNull`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `GetBoolean`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `GetInt`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `GetLong`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `GetDouble`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `GetFloat`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `GetBytes`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `GetString`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `GetEnum`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `GetStringForFixed`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `ConvertU64ToUsize`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.1`: 8 bytes, alignment: 8 bytes print-type-size field `.0`: 0 bytes print-type-size variant `ConvertI64ToUsize`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.1`: 8 bytes, alignment: 8 bytes print-type-size field `.0`: 0 bytes print-type-size variant `ParseSchemaJson`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `ReadSchemaFromReader`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `DecimalPrecisionMuBePositive`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.precision`: 8 bytes, alignment: 8 bytes print-type-size variant `BigDecimalLen`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `DeflateCompress`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `DeflateCompressFinish`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `DeflateDecompress`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `ZstdCompress`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `ZstdDecompress`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `ReadHeader`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `ReadMarker`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `ReadBlockMarker`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `ReadIntoBuf`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `ReadVariableIntegerBytes`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `ZagI32`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.1`: 8 bytes, alignment: 8 bytes print-type-size field `.0`: 0 bytes print-type-size variant `WriteBytes`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `FlushWriter`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `WriteMarker`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `ConvertJsonToString`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `ConvertF64ToJson`: 16 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 8 bytes, alignment: 8 bytes print-type-size variant `ConvertU32ToUsize`: 12 bytes print-type-size padding: 8 bytes print-type-size field `.1`: 4 bytes, alignment: 4 bytes print-type-size field `.0`: 0 bytes print-type-size variant `ConvertI32ToUsize`: 12 bytes print-type-size padding: 8 bytes print-type-size field `.1`: 4 bytes, alignment: 4 bytes print-type-size field `.0`: 0 bytes print-type-size variant `GetDefaultUnion`: 10 bytes print-type-size padding: 8 bytes print-type-size field `.1`: 1 bytes, alignment: 1 bytes print-type-size field `.0`: 1 bytes print-type-size variant `BoolValue`: 9 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 1 bytes, alignment: 1 bytes print-type-size variant `ResolveDecimalSchema`: 9 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 1 bytes, alignment: 1 bytes print-type-size variant `MapKeyType`: 9 bytes print-type-size padding: 8 bytes print-type-size field `.0`: 1 bytes, alignment: 1 bytes print-type-size variant `Validation`: 0 bytes print-type-size variant `GetEnumUnknownIndexValue`: 0 bytes print-type-size variant `EmptyUnion`: 0 bytes print-type-size variant `GetNameField`: 0 bytes print-type-size variant `GetNameFieldFromRecord`: 0 bytes print-type-size variant `GetNestedUnion`: 0 bytes print-type-size variant `GetUnionDuplicate`: 0 bytes print-type-size variant `ParseSchemaFromValidJson`: 0 bytes print-type-size variant `BigDecimalSign`: 0 bytes print-type-size variant `BigDecimalScale`: 0 bytes print-type-size variant `GetLogicalTypeField`: 0 bytes print-type-size variant `GetComplexTypeField`: 0 bytes print-type-size variant `GetRecordFieldsJson`: 0 bytes print-type-size variant `GetEnumSymbolsField`: 0 bytes print-type-size variant `GetEnumSymbols`: 0 bytes print-type-size variant `GetArrayItemsField`: 0 bytes print-type-size variant `GetMapValuesField`: 0 bytes print-type-size variant `GetFixedSizeField`: 0 bytes print-type-size variant `HeaderMagic`: 0 bytes print-type-size variant `GetAvroSchemaFromMap`: 0 bytes print-type-size variant `GetHeaderMetadata`: 0 bytes print-type-size variant `GetBlockMarker`: 0 bytes print-type-size variant `IntegerOverflow`: 0 bytes print-type-size variant `ReadBlock`: 0 bytes print-type-size variant `FileHeaderAlreadyWritten`: 0 bytes print-type-size variant `IllegalSingleObjectWriterState`: 0 bytes print-type-size variant `BadCodecMetadata`: 0 bytes ``` </details> -- This is an automated message from the Apache Git Service. To respond to the message, please log on to GitHub and use the URL above to go to the specific comment. To unsubscribe, e-mail: dev-unsubscr...@avro.apache.org For queries about this service, please contact Infrastructure at: us...@infra.apache.org