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

mgrigorov pushed a commit to branch avro-3405-metadata-in-file
in repository https://gitbox.apache.org/repos/asf/avro.git

commit d1ab9230a819408c3c3b2c98c5a35998b1fb70d2
Author: Martin Tzvetanov Grigorov <[email protected]>
AuthorDate: Wed Feb 16 10:15:57 2022 +0200

    AVRO-3405 Extract duplicate code in a method
    
    Signed-off-by: Martin Tzvetanov Grigorov <[email protected]>
---
 lang/rust/src/writer.rs | 28 ++++++++++++----------------
 1 file changed, 12 insertions(+), 16 deletions(-)

diff --git a/lang/rust/src/writer.rs b/lang/rust/src/writer.rs
index a222a0f..ca08fe0 100644
--- a/lang/rust/src/writer.rs
+++ b/lang/rust/src/writer.rs
@@ -83,14 +83,7 @@ impl<'a, W: Write> Writer<'a, W> {
     /// internal buffering for performance reasons. If you want to be sure the 
value has been
     /// written, then call [`flush`](struct.Writer.html#method.flush).
     pub fn append<T: Into<Value>>(&mut self, value: T) -> AvroResult<usize> {
-        let n = if !self.has_header {
-            let header = self.header()?;
-            let n = self.append_bytes(header.as_ref())?;
-            self.has_header = true;
-            n
-        } else {
-            0
-        };
+        let n = self.maybe_write_header()?;
 
         let avro = value.into();
         write_value_ref(self.schema, &avro, &mut self.buffer)?;
@@ -112,14 +105,7 @@ impl<'a, W: Write> Writer<'a, W> {
     /// internal buffering for performance reasons. If you want to be sure the 
value has been
     /// written, then call [`flush`](struct.Writer.html#method.flush).
     pub fn append_value_ref(&mut self, value: &Value) -> AvroResult<usize> {
-        let n = if !self.has_header {
-            let header = self.header()?;
-            let n = self.append_bytes(header.as_ref())?;
-            self.has_header = true;
-            n
-        } else {
-            0
-        };
+        let n = self.maybe_write_header()?;
 
         write_value_ref(self.schema, value, &mut self.buffer)?;
 
@@ -307,6 +293,16 @@ impl<'a, W: Write> Writer<'a, W> {
 
         Ok(header)
     }
+    fn maybe_write_header(&mut self) -> AvroResult<usize> {
+        if !self.has_header {
+            let header = self.header()?;
+            let n = self.append_bytes(header.as_ref())?;
+            self.has_header = true;
+            Ok(n)
+        } else {
+            Ok(0)
+        }
+    }
 }
 
 /// Encode a compatible value (implementing the `ToAvro` trait) into Avro 
format, also performing

Reply via email to