fmmap 0.5.0

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

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(())
  }
}