Skip to main content

FileExt

Trait FileExt 

Source
pub trait FileExt {
    // Required methods
    fn size(&self) -> Result<u64>;
    fn preallocate(&self, len: u64) -> Result<()>;
    fn advise_random_access(&self) -> Result<()>;
    fn advise_sequential_access(&self) -> Result<()>;
    fn disable_cache(&self) -> Result<()>;
    fn read_exact_at(&self, buf: &mut [u8], offset: u64) -> Result<()>;
    fn write_all_at(&self, buf: &[u8], offset: u64) -> Result<()>;
}
Expand description

Extension convenience trait that allows pre-allocating files, suggesting random access pattern and doing cross-platform exact reads/writes

Required Methods§

Source

fn size(&self) -> Result<u64>

Get file size

Source

fn preallocate(&self, len: u64) -> Result<()>

Make sure file has specified number of bytes allocated for it

Source

fn advise_random_access(&self) -> Result<()>

Advise OS/file system that file will use random access and read-ahead behavior is undesirable, on Windows this can only be set when file is opened, see OpenOptionsExt

Source

fn advise_sequential_access(&self) -> Result<()>

Advise OS/file system that file will use sequential access and read-ahead behavior is desirable, on Windows this can only be set when file is opened, see OpenOptionsExt

Source

fn disable_cache(&self) -> Result<()>

Disable cache on macOS

Source

fn read_exact_at(&self, buf: &mut [u8], offset: u64) -> Result<()>

Read exact number of bytes at a specific offset

Source

fn write_all_at(&self, buf: &[u8], offset: u64) -> Result<()>

Write all provided bytes at a specific offset

Dyn Compatibility§

This trait is dyn compatible.

In older versions of Rust, dyn compatibility was called "object safety".

Implementations on Foreign Types§

Source§

impl FileExt for File

Source§

fn size(&self) -> Result<u64>

Source§

fn preallocate(&self, len: u64) -> Result<()>

Source§

fn advise_random_access(&self) -> Result<()>

Source§

fn advise_sequential_access(&self) -> Result<()>

Source§

fn disable_cache(&self) -> Result<()>

Source§

fn read_exact_at(&self, buf: &mut [u8], offset: u64) -> Result<()>

Source§

fn write_all_at(&self, buf: &[u8], offset: u64) -> Result<()>

Implementors§