use std::fs::File;
use std::io;
pub trait FileExt {
fn read_at(&self, buf: &mut [u8], offset: u64) -> io::Result<usize>;
fn write_at(&self, buf: &[u8], offset: u64) -> io::Result<usize>;
}
#[cfg(unix)]
impl FileExt for File {
fn read_at(&self, buf: &mut [u8], offset: u64) -> io::Result<usize> {
std::os::unix::fs::FileExt::read_at(self, buf, offset)
}
fn write_at(&self, buf: &[u8], offset: u64) -> io::Result<usize> {
std::os::unix::fs::FileExt::write_at(self, buf, offset)
}
}
#[cfg(windows)]
impl FileExt for File {
fn read_at(&self, buf: &mut [u8], offset: u64) -> io::Result<usize> {
std::os::windows::fs::FileExt::seek_read(self, buf, offset)
}
fn write_at(&self, buf: &[u8], offset: u64) -> io::Result<usize> {
std::os::windows::fs::FileExt::seek_write(self, buf, offset)
}
}