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
