1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
use std::io::{Read, Result, Seek, SeekFrom};
use torch_sys::io::ReadStream;

pub struct ReadSeekAdapter<T> {
    inner: T,
}

impl<T: Read + Seek> ReadSeekAdapter<T> {
    pub fn new(inner: T) -> Self {
        Self { inner }
    }
}

impl<T: Read> Read for ReadSeekAdapter<T> {
    fn read(&mut self, buf: &mut [u8]) -> Result<usize> {
        self.inner.read(buf)
    }
}

impl<T: Seek> Seek for ReadSeekAdapter<T> {
    fn seek(&mut self, pos: SeekFrom) -> Result<u64> {
        self.inner.seek(pos)
    }
}

impl<T: Read + Seek> ReadStream for ReadSeekAdapter<T> {}