fmmap 0.4.0

A flexible and convenient high-level mmap for zero-copy file I/O.
Documentation
use std::path::{Path, PathBuf};
use std::time::SystemTime;
use bytes::{Bytes, BytesMut};
use crate::{MmapFileExt, MmapFileMutExt, MetaData};
use crate::metadata::MemoryMetaData;

define_impl_constructor_for_mmap_file!(MemoryMmapFile, "MemoryMmapFile", "");

impl_mmap_file_ext!(MemoryMmapFile);

define_and_impl_constructor_for_mmap_file_mut!(MemoryMmapFileMut, "MemoryMmapFileMut", MemoryMmapFile, "MemoryMmapFile", "MmapFileExt", "");

impl_mmap_file_ext!(MemoryMmapFileMut);

impl MmapFileMutExt for MemoryMmapFileMut {
    #[inline]
    fn as_mut_slice(&mut self) -> &mut [u8] {
        self.mmap.as_mut()
    }

    #[inline]
    fn is_cow(&self) -> bool {
        false
    }

    noop_flush!();

    #[inline]
    fn truncate(&mut self, max_sz: u64) -> crate::error::Result<()> {
        self.mmap.resize(max_sz as usize, 0);
        Ok(())
    }

    #[inline]
    fn drop_remove(self) -> crate::error::Result<()> {
        Ok(())
    }

    #[inline]
    fn close_with_truncate(self, _max_sz: i64) -> crate::error::Result<()> {
        Ok(())
    }
}