vortex_serde/io/
offset.rs1use std::future::Future;
2
3use bytes::BytesMut;
4
5use crate::io::VortexReadAt;
6
7pub struct OffsetReadAt<R> {
9 read: R,
10 offset: u64,
11}
12
13impl<R: VortexReadAt> OffsetReadAt<R> {
14 pub fn new(read: R, offset: u64) -> Self {
15 Self { read, offset }
16 }
17}
18
19impl<R: VortexReadAt> VortexReadAt for OffsetReadAt<R> {
20 fn read_at_into(
21 &self,
22 pos: u64,
23 buffer: BytesMut,
24 ) -> impl Future<Output = std::io::Result<BytesMut>> {
25 self.read.read_at_into(pos + self.offset, buffer)
26 }
27
28 fn performance_hint(&self) -> usize {
29 self.read.performance_hint()
30 }
31
32 async fn size(&self) -> u64 {
33 self.read.size().await - self.offset
34 }
35}