use std::borrow::Borrow;
use std::fs::File;
use std::io;
#[cfg(unix)]
use std::os::unix::fs::FileExt;
#[cfg(windows)]
use std::os::windows::fs::FileExt;
pub trait PosRead {
fn pread(&self, buf: &mut [u8], offset: u64) -> io::Result<usize>;
}
impl<B> PosRead for B
where B: Borrow<File>
{
#[cfg(unix)]
#[inline]
fn pread(&self, buf: &mut [u8], offset: u64) -> io::Result<usize> {
self.borrow().read_at(buf, offset)
}
#[cfg(windows)]
#[inline]
fn pread(&self, buf: &mut [u8], offset: u64) -> io::Result<usize> {
self.borrow().seek_read(buf, offset)
}
}