Skip to content

Commit 35a6fc9

Browse files
robert3005joseph-isaacs
authored andcommitted
Chore: Implement std::io::Write for ByteBufferMut (vortex-data#3566)
fix vortex-data#3533 Signed-off-by: Robert Kruszewski <github@robertk.io> Co-authored-by: Joe Isaacs <joe.isaacs@live.co.uk> Signed-off-by: mwlon <m.w.loncaric@gmail.com>
1 parent 60e33c7 commit 35a6fc9

File tree

2 files changed

+17
-5
lines changed

2 files changed

+17
-5
lines changed

encodings/pco/src/array.rs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ use vortex_array::vtable::{
1414
ValiditySliceHelper, ValidityVTableFromValiditySliceHelper,
1515
};
1616
use vortex_array::{ArrayRef, Canonical, EncodingId, EncodingRef, IntoArray, ToCanonical, vtable};
17-
use vortex_buffer::{BufferMut, ByteBuffer};
17+
use vortex_buffer::{BufferMut, ByteBuffer, ByteBufferMut};
1818
use vortex_dtype::{DType, PType};
1919
use vortex_error::{VortexError, VortexResult, vortex_bail, vortex_err};
2020
use vortex_scalar::Scalar;
@@ -186,17 +186,17 @@ impl PcoArray {
186186
}
187187
);
188188

189-
let mut chunk_meta_buffer = Vec::with_capacity(cc.chunk_meta_size_hint());
189+
let mut chunk_meta_buffer = ByteBufferMut::with_capacity(cc.chunk_meta_size_hint());
190190
cc.write_chunk_meta(&mut chunk_meta_buffer)
191191
.map_err(vortex_err_from_pco)?;
192-
chunk_meta_buffers.push(ByteBuffer::from(chunk_meta_buffer));
192+
chunk_meta_buffers.push(chunk_meta_buffer.freeze());
193193

194194
let mut page_infos = vec![];
195195
for (page_idx, page_n_values) in cc.n_per_page().into_iter().enumerate() {
196-
let mut page = Vec::with_capacity(cc.page_size_hint(page_idx));
196+
let mut page = ByteBufferMut::with_capacity(cc.page_size_hint(page_idx));
197197
cc.write_page(page_idx, &mut page)
198198
.map_err(vortex_err_from_pco)?;
199-
page_buffers.push(ByteBuffer::from(page));
199+
page_buffers.push(page.freeze());
200200
page_infos.push(PcoPageInfo {
201201
n_values: u32::try_from(page_n_values)?,
202202
});

vortex-buffer/src/buffer_mut.rs

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,7 @@
11
use core::mem::MaybeUninit;
22
use std::any::type_name;
33
use std::fmt::{Debug, Formatter};
4+
use std::io::Write;
45
use std::ops::{Deref, DerefMut};
56

67
use bytes::buf::UninitSlice;
@@ -540,6 +541,17 @@ impl AlignedBytesMut for BytesMut {
540541
}
541542
}
542543

544+
impl Write for ByteBufferMut {
545+
fn write(&mut self, buf: &[u8]) -> std::io::Result<usize> {
546+
self.extend_from_slice(buf);
547+
Ok(buf.len())
548+
}
549+
550+
fn flush(&mut self) -> std::io::Result<()> {
551+
Ok(())
552+
}
553+
}
554+
543555
#[cfg(test)]
544556
mod test {
545557
use bytes::{Buf, BufMut};

0 commit comments

Comments
 (0)