AndreaBozzo commented on code in PR #161:
URL: https://github.com/apache/fluss-rust/pull/161#discussion_r2690428883
##########
crates/fluss/src/row/encode/mod.rs:
##########
@@ -62,3 +64,62 @@ impl dyn KeyEncoder {
}
}
}
+
+/// An encoder to write [`BinaryRow`]. It's used to write row
+/// multi-times one by one. When writing a new row:
+///
+/// 1. call method [`RowEncoder::start_new_row()`] to start the writing.
+/// 2. call method [`RowEncoder::encode_field()`] to write the row's field.
+/// 3. call method [`RowEncoder::finishRow()`] to finish the writing and get
the written row.
+#[allow(dead_code)]
+pub trait RowEncoder {
+ /// Start to write a new row.
+ ///
+ /// # Returns
+ /// * Ok(()) if successful
+ fn start_new_row(&mut self) -> Result<()>;
+
+ /// Write the row's field in given pos with given value.
+ ///
+ /// # Arguments
+ /// * pos - the position of the field to write.
+ /// * value - the value of the field to write.
+ ///
+ /// # Returns
+ /// * Ok(()) if successful
+ fn encode_field(&mut self, pos: usize, value: Datum) -> Result<()>;
+
+ /// Finish write the row, return the written row.
+ ///
+ /// # Returns
+ /// * the written row
+ fn finish_row(&mut self) -> Result<impl BinaryRow>;
Review Comment:
Extra minor, but for future i think we should make clearer how the borrow
semantic works here
Like
> The returned row borrows from the encoder's internal buffer.
> The encoder cannot be reused (via `start_new_row()`) until the returned
> row goes out of scope
What do you think?
--
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: [email protected]
For queries about this service, please contact Infrastructure at:
[email protected]