This is an automated email from the ASF dual-hosted git repository.

mgrigorov pushed a commit to branch avro-3631/fix-fixed-serialization
in repository https://gitbox.apache.org/repos/asf/avro.git


The following commit(s) were added to 
refs/heads/avro-3631/fix-fixed-serialization by this push:
     new 3e3f125eb AVRO-3631: Use #[serde(with)] attribute to get rid of 
implementation detail ByteArray
3e3f125eb is described below

commit 3e3f125ebfd1526eb8ba627e1e6f72c9137d11b7
Author: Martin Tzvetanov Grigorov <[email protected]>
AuthorDate: Mon Oct 3 23:45:11 2022 +0300

    AVRO-3631: Use #[serde(with)] attribute to get rid of implementation detail 
ByteArray
    
    Signed-off-by: Martin Tzvetanov Grigorov <[email protected]>
---
 lang/rust/avro/src/de.rs    |  4 ++--
 lang/rust/avro/src/ser.rs   | 18 ++++++++----------
 lang/rust/avro/src/types.rs |  8 +++-----
 3 files changed, 13 insertions(+), 17 deletions(-)

diff --git a/lang/rust/avro/src/de.rs b/lang/rust/avro/src/de.rs
index 317f43be2..51f257e6b 100644
--- a/lang/rust/avro/src/de.rs
+++ b/lang/rust/avro/src/de.rs
@@ -595,7 +595,6 @@ pub fn from_value<'de, D: Deserialize<'de>>(value: &'de 
Value) -> Result<D, Erro
 mod tests {
     use pretty_assertions::assert_eq;
     use serde::Serialize;
-    use serde_bytes::ByteArray;
     use uuid::Uuid;
 
     use super::*;
@@ -1068,7 +1067,8 @@ mod tests {
     fn avro_3631_test_struct_fixed_field() {
         #[derive(Debug, Serialize, Deserialize)]
         struct TestStructFixedField {
-            field: ByteArray<6>,
+            #[serde(with = "serde_bytes")]
+            field: [u8; 6],
         }
 
         let value = Value::Record(vec![(
diff --git a/lang/rust/avro/src/ser.rs b/lang/rust/avro/src/ser.rs
index fb26cb183..af286640d 100644
--- a/lang/rust/avro/src/ser.rs
+++ b/lang/rust/avro/src/ser.rs
@@ -487,7 +487,6 @@ mod tests {
     use super::*;
     use pretty_assertions::assert_eq;
     use serde::{Deserialize, Serialize};
-    use serde_bytes::ByteArray;
 
     #[derive(Debug, Deserialize, Serialize, Clone)]
     struct Test {
@@ -678,11 +677,6 @@ mod tests {
         Val2(f32, f32, f32),
     }
 
-    #[derive(Debug, Serialize, Deserialize)]
-    struct TestStructFixedField {
-        field: ByteArray<6>,
-    }
-
     #[test]
     fn test_to_value() {
         let test = Test {
@@ -1007,12 +1001,16 @@ mod tests {
 
     #[test]
     fn avro_3631_test_to_value_fixed_field() {
-        let test = TestStructFixedField {
-            field: ByteArray::new([1; 6]),
-        };
+        #[derive(Debug, Serialize, Deserialize)]
+        struct TestStructFixedField {
+            #[serde(with = "serde_bytes")]
+            field: [u8; 6],
+        }
+
+        let test = TestStructFixedField { field: [1; 6] };
         let expected = Value::Record(vec![(
             "field".to_owned(),
-            Value::Fixed(6, Vec::from(test.field.clone().into_array())),
+            Value::Fixed(6, Vec::from(test.field.clone())),
         )]);
         assert_eq!(
             expected,
diff --git a/lang/rust/avro/src/types.rs b/lang/rust/avro/src/types.rs
index f1cd75ba5..2b5dc56cd 100644
--- a/lang/rust/avro/src/types.rs
+++ b/lang/rust/avro/src/types.rs
@@ -958,7 +958,6 @@ mod tests {
     use apache_avro_test_helper::logger::{assert_logged, assert_not_logged};
     use pretty_assertions::assert_eq;
     use serde::{Deserialize, Serialize};
-    use serde_bytes::ByteArray;
     use uuid::Uuid;
 
     #[test]
@@ -2399,12 +2398,11 @@ Field with name '"b"' is not a member of the map 
items"#,
     fn avro_3631_test_serialize_fixed_fields() {
         #[derive(Debug, Serialize, Deserialize)]
         struct TestStructFixedField {
-            field: ByteArray<6>,
+            #[serde(with = "serde_bytes")]
+            field: [u8; 6],
         }
 
-        let test = TestStructFixedField {
-            field: ByteArray::new([1; 6]),
-        };
+        let test = TestStructFixedField { field: [1; 6] };
         let value: Value = to_value(test).unwrap();
         let schema = Schema::parse_str(
             r#"

Reply via email to