#[repr(transparent)]pub struct MmapFile { /* private fields */ }
Available on crate feature
sync
only.Expand description
A read-only memory map file.
There is 3 status of this struct:
- Disk: mmap to a real file
- Memory: use
Bytes
to mock a mmap, which is useful for test and in-memory storage engine - Empty: a state represents null mmap, which is helpful for drop, close the
MmapFile
. This state cannot be constructed directly.
Implementations§
source§impl MmapFile
impl MmapFile
sourcepub fn open<P: AsRef<Path>>(path: P) -> Result<Self>
pub fn open<P: AsRef<Path>>(path: P) -> Result<Self>
Open a readable memory map backed by a file
Examples
use fmmap::{MmapFile, MmapFileExt};
use std::fs::{remove_file, File};
use std::io::Write;
# use scopeguard::defer;
# let mut file = File::create("open_test.txt").unwrap();
# defer!(remove_file("open_test.txt").unwrap());
# file.write_all("some data...".as_bytes()).unwrap();
# drop(file);
// open and mmap the file
let mut file = MmapFile::open("open_test.txt").unwrap();
let mut buf = vec![0; "some data...".len()];
file.read_exact(buf.as_mut_slice(), 0);
assert_eq!(buf.as_slice(), "some data...".as_bytes());
sourcepub fn open_with_options<P: AsRef<Path>>(path: P, opts: Options) -> Result<Self>
pub fn open_with_options<P: AsRef<Path>>(path: P, opts: Options) -> Result<Self>
Open a readable memory map backed by a file with Options
Examples
use fmmap::{Options, MmapFile, MmapFileExt};
# use scopeguard::defer;
# let mut file = std::fs::File::create("open_test_with_options.txt").unwrap();
# defer!(std::fs::remove_file("open_test_with_options.txt").unwrap());
# std::io::Write::write_all(&mut file, "sanity text".as_bytes()).unwrap();
# std::io::Write::write_all(&mut file, "some data...".as_bytes()).unwrap();
# drop(file);
// mmap the file with options
let opts = Options::new()
// allow read
.read(true)
// allow write
.write(true)
// allow append
.append(true)
// truncate to 100
.max_size(100)
// mmap content after the sanity text
.offset("sanity text".as_bytes().len() as u64);
// open and mmap the file
let mut file = MmapFile::open_with_options("open_test_with_options.txt", opts).unwrap();
let mut buf = vec![0; "some data...".len()];
file.read_exact(buf.as_mut_slice(), 0);
assert_eq!(buf.as_slice(), "some data...".as_bytes());
sourcepub fn open_exec<P: AsRef<Path>>(path: P) -> Result<Self>
pub fn open_exec<P: AsRef<Path>>(path: P) -> Result<Self>
Open a readable memory map backed by a file
Examples
use fmmap::{MmapFile, MmapFileExt};
use std::fs::{remove_file, File};
use std::io::Write;
# use scopeguard::defer;
# let mut file = File::create("open_exec_test.txt").unwrap();
# defer!(remove_file("open_exec_test.txt").unwrap());
# file.write_all("some data...".as_bytes()).unwrap();
# drop(file);
// open and mmap the file
let mut file = MmapFile::open_exec("open_exec_test.txt").unwrap();
let mut buf = vec![0; "some data...".len()];
file.read_exact(buf.as_mut_slice(), 0);
assert_eq!(buf.as_slice(), "some data...".as_bytes());
sourcepub fn open_exec_with_options<P: AsRef<Path>>(
path: P,
opts: Options
) -> Result<Self>
pub fn open_exec_with_options<P: AsRef<Path>>( path: P, opts: Options ) -> Result<Self>
Open a readable and executable memory map backed by a file with Options
.
Examples
use fmmap::{Options, MmapFile, MmapFileExt};
# use scopeguard::defer;
# let mut file = std::fs::File::create("open_exec_test_with_options.txt").unwrap();
# defer!(std::fs::remove_file("open_exec_test_with_options.txt").unwrap());
# std::io::Write::write_all(&mut file, "sanity text".as_bytes()).unwrap();
# std::io::Write::write_all(&mut file, "some data...".as_bytes()).unwrap();
# drop(file);
// mmap the file with options
let opts = Options::new()
// allow read
.read(true)
// mmap content after the sanity text
.offset("sanity text".as_bytes().len() as u64);
// open and mmap the file
let mut file = MmapFile::open_exec_with_options("open_exec_test_with_options.txt", opts).unwrap();
let mut buf = vec![0; "some data...".len()];
file.read_exact(buf.as_mut_slice(), 0);
assert_eq!(buf.as_slice(), "some data...".as_bytes());
source§impl MmapFile
impl MmapFile
sourcepub fn memory_from_string<P: AsRef<Path>>(path: P, src: String) -> Self
pub fn memory_from_string<P: AsRef<Path>>(path: P, src: String) -> Self
sourcepub fn memory_from_slice<P: AsRef<Path>>(path: P, src: &'static [u8]) -> Self
pub fn memory_from_slice<P: AsRef<Path>>(path: P, src: &'static [u8]) -> Self
sourcepub fn memory_from_str<P: AsRef<Path>>(path: P, src: &'static str) -> Self
pub fn memory_from_str<P: AsRef<Path>>(path: P, src: &'static str) -> Self
Trait Implementations§
source§impl From<DiskMmapFile> for MmapFile
impl From<DiskMmapFile> for MmapFile
source§fn from(file: DiskMmapFile) -> Self
fn from(file: DiskMmapFile) -> Self
Converts to this type from the input type.
source§impl From<MemoryMmapFile> for MmapFile
impl From<MemoryMmapFile> for MmapFile
source§fn from(file: MemoryMmapFile) -> Self
fn from(file: MemoryMmapFile) -> Self
Converts to this type from the input type.
source§impl MmapFileExt for MmapFile
impl MmapFileExt for MmapFile
source§fn lock_exclusive(&self) -> Result<()>
fn lock_exclusive(&self) -> Result<()>
Locks the file for shared usage, blocking if the file is currently locked exclusively. Read more
Locks the file for exclusive usage, blocking if the file is currently locked. Read more
source§fn try_lock_exclusive(&self) -> Result<()>
fn try_lock_exclusive(&self) -> Result<()>
Locks the file for shared usage, or returns a an error if the file is currently locked (see lock_contended_error). Read more
Locks the file for shared usage, or returns a an error if the file is currently locked (see lock_contended_error).Locks the file for shared usage, or returns a an error if the file is currently locked (see lock_contended_error). Read more
source§fn slice(&self, offset: usize, sz: usize) -> &[u8] ⓘ
fn slice(&self, offset: usize, sz: usize) -> &[u8] ⓘ
slice returns data starting from offset off of size sz. Read more
source§fn bytes(&self, offset: usize, sz: usize) -> Result<&[u8]>
fn bytes(&self, offset: usize, sz: usize) -> Result<&[u8]>
bytes returns data starting from offset off of size sz. Read more
source§fn path_lossy(&self) -> Cow<'_, str>
fn path_lossy(&self) -> Cow<'_, str>
Returns the path lossy string of the inner file.
source§fn path_string(&self) -> String
fn path_string(&self) -> String
Returns the path string of the inner file.
source§fn copy_all_to_vec(&self) -> Vec<u8>
fn copy_all_to_vec(&self) -> Vec<u8>
Copy the content of the mmap file to Vec
source§fn copy_range_to_vec(&self, offset: usize, len: usize) -> Vec<u8>
fn copy_range_to_vec(&self, offset: usize, len: usize) -> Vec<u8>
Copy a range of content of the mmap file to Vec
source§fn write_all_to_new_file<P: AsRef<Path>>(&self, new_file_path: P) -> Result<()>
fn write_all_to_new_file<P: AsRef<Path>>(&self, new_file_path: P) -> Result<()>
Write the content of the mmap file to a new file.
source§fn write_range_to_new_file<P: AsRef<Path>>(
&self,
new_file_path: P,
offset: usize,
len: usize
) -> Result<()>
fn write_range_to_new_file<P: AsRef<Path>>( &self, new_file_path: P, offset: usize, len: usize ) -> Result<()>
Write a range of content of the mmap file to new file.
source§fn reader(&self, offset: usize) -> Result<MmapFileReader<'_>>
fn reader(&self, offset: usize) -> Result<MmapFileReader<'_>>
Returns a
MmapFileReader
which helps read data from mmap like a normal File. Read moresource§fn range_reader(&self, offset: usize, len: usize) -> Result<MmapFileReader<'_>>
fn range_reader(&self, offset: usize, len: usize) -> Result<MmapFileReader<'_>>
Returns a
MmapFileReader
base on the given offset
and len
, which helps read data from mmap like a normal File. Read moresource§fn read(&self, dst: &mut [u8], offset: usize) -> usize
fn read(&self, dst: &mut [u8], offset: usize) -> usize
Read bytes to the dst buf from the offset, returns how many bytes read.
source§fn read_exact(&self, dst: &mut [u8], offset: usize) -> Result<()>
fn read_exact(&self, dst: &mut [u8], offset: usize) -> Result<()>
Read the exact number of bytes required to fill buf.
source§fn read_i16(&self, offset: usize) -> Result<i16>
fn read_i16(&self, offset: usize) -> Result<i16>
Read a signed 16 bit integer from offset in big-endian byte order.
source§fn read_i16_le(&self, offset: usize) -> Result<i16>
fn read_i16_le(&self, offset: usize) -> Result<i16>
Read a signed 16 bit integer from offset in little-endian byte order.
source§fn read_isize(&self, offset: usize) -> Result<isize>
fn read_isize(&self, offset: usize) -> Result<isize>
Read a signed integer from offset in big-endian byte order.
source§fn read_isize_le(&self, offset: usize) -> Result<isize>
fn read_isize_le(&self, offset: usize) -> Result<isize>
Read a signed integer from offset in little-endian byte order.
source§fn read_i32(&self, offset: usize) -> Result<i32>
fn read_i32(&self, offset: usize) -> Result<i32>
Read a signed 32 bit integer from offset in big-endian byte order.
source§fn read_i32_le(&self, offset: usize) -> Result<i32>
fn read_i32_le(&self, offset: usize) -> Result<i32>
Read a signed 32 bit integer from offset in little-endian byte order.
source§fn read_i64(&self, offset: usize) -> Result<i64>
fn read_i64(&self, offset: usize) -> Result<i64>
Read a signed 64 bit integer from offset in big-endian byte order.
source§fn read_i64_le(&self, offset: usize) -> Result<i64>
fn read_i64_le(&self, offset: usize) -> Result<i64>
Read a signed 64 bit integer from offset in little-endian byte order.
source§fn read_i128(&self, offset: usize) -> Result<i128>
fn read_i128(&self, offset: usize) -> Result<i128>
Read a signed 128 bit integer from offset in big-endian byte order.
source§fn read_i128_le(&self, offset: usize) -> Result<i128>
fn read_i128_le(&self, offset: usize) -> Result<i128>
Read a signed 128 bit integer from offset in little-endian byte order.
source§fn read_u16(&self, offset: usize) -> Result<u16>
fn read_u16(&self, offset: usize) -> Result<u16>
Read an unsigned 16 bit integer from offset in big-endian.
source§fn read_u16_le(&self, offset: usize) -> Result<u16>
fn read_u16_le(&self, offset: usize) -> Result<u16>
Read an unsigned 16 bit integer from offset in little-endian.
source§fn read_usize(&self, offset: usize) -> Result<usize>
fn read_usize(&self, offset: usize) -> Result<usize>
Read an unsigned integer from offset in big-endian byte order.
source§fn read_usize_le(&self, offset: usize) -> Result<usize>
fn read_usize_le(&self, offset: usize) -> Result<usize>
Read an unsigned integer from offset in little-endian byte order.
source§fn read_u32(&self, offset: usize) -> Result<u32>
fn read_u32(&self, offset: usize) -> Result<u32>
Read an unsigned 32 bit integer from offset in big-endian.
source§fn read_u32_le(&self, offset: usize) -> Result<u32>
fn read_u32_le(&self, offset: usize) -> Result<u32>
Read an unsigned 32 bit integer from offset in little-endian.
source§fn read_u64(&self, offset: usize) -> Result<u64>
fn read_u64(&self, offset: usize) -> Result<u64>
Read an unsigned 64 bit integer from offset in big-endian.
source§fn read_u64_le(&self, offset: usize) -> Result<u64>
fn read_u64_le(&self, offset: usize) -> Result<u64>
Read an unsigned 64 bit integer from offset in little-endian.
source§fn read_u128(&self, offset: usize) -> Result<u128>
fn read_u128(&self, offset: usize) -> Result<u128>
Read an unsigned 128 bit integer from offset in big-endian.
source§fn read_u128_le(&self, offset: usize) -> Result<u128>
fn read_u128_le(&self, offset: usize) -> Result<u128>
Read an unsigned 128 bit integer from offset in little-endian.
source§fn read_f32(&self, offset: usize) -> Result<f32>
fn read_f32(&self, offset: usize) -> Result<f32>
Read an IEEE754 single-precision (4 bytes) floating point number from
offset in big-endian byte order.
source§fn read_f32_le(&self, offset: usize) -> Result<f32>
fn read_f32_le(&self, offset: usize) -> Result<f32>
Read an IEEE754 single-precision (4 bytes) floating point number from
offset in little-endian byte order.
Auto Trait Implementations§
impl RefUnwindSafe for MmapFile
impl Send for MmapFile
impl Sync for MmapFile
impl Unpin for MmapFile
impl UnwindSafe for MmapFile
Blanket Implementations§
source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere T: ?Sized,
source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Mutably borrows from an owned value. Read more