rust: Update the memmap2 crate to version 0.4.0
This version:
* Optionally implements the `StableDeref` trait, removing the need
for a wrapper type doing that
* Adds support for mapping empty files, which can routinely happen
for dirstate-v2 data files. This was a cause of some failing tests
when running with `run-tests.py --rhg --extra-config-opt rhg.status=1`
Differential Revision: https://phab.mercurial-scm.org/D11446
--- a/rust/Cargo.lock Thu Sep 16 16:42:16 2021 -0700
+++ b/rust/Cargo.lock Fri Sep 17 08:57:12 2021 +0200
@@ -1,5 +1,6 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
+
[[package]]
name = "adler"
version = "0.2.3"
@@ -511,11 +512,12 @@
[[package]]
name = "memmap2"
-version = "0.3.1"
+version = "0.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
-checksum = "00b6c2ebff6180198788f5db08d7ce3bc1d0b617176678831a7510825973e357"
+checksum = "de5d3112c080d58ce560081baeaab7e1e864ca21795ddbf533d5b1842bb1ecf8"
dependencies = [
"libc",
+ "stable_deref_trait",
]
[[package]]
--- a/rust/hg-core/Cargo.toml Thu Sep 16 16:42:16 2021 -0700
+++ b/rust/hg-core/Cargo.toml Fri Sep 17 08:57:12 2021 +0200
@@ -29,7 +29,7 @@
crossbeam-channel = "0.4"
micro-timer = "0.3.0"
log = "0.4.8"
-memmap2 = "0.3.1"
+memmap2 = {version = "0.4", features = ["stable_deref_trait"]}
zstd = "0.5.3"
format-bytes = "0.2.2"
--- a/rust/hg-core/src/repo.rs Thu Sep 16 16:42:16 2021 -0700
+++ b/rust/hg-core/src/repo.rs Fri Sep 17 08:57:12 2021 +0200
@@ -290,7 +290,7 @@
.mmap_open(docket.data_filename())
.io_not_found_as_none()?
{
- OwningDirstateMap::new_empty(MmapWrapper(data_mmap))
+ OwningDirstateMap::new_empty(data_mmap)
} else {
OwningDirstateMap::new_empty(Vec::new())
};
@@ -407,16 +407,3 @@
Ok(RefMut::map(borrowed, |option| option.as_mut().unwrap()))
}
}
-
-// TODO: remove this when https://github.com/RazrFalcon/memmap2-rs/pull/22 is on crates.io
-struct MmapWrapper(memmap2::Mmap);
-
-impl std::ops::Deref for MmapWrapper {
- type Target = [u8];
-
- fn deref(&self) -> &[u8] {
- self.0.deref()
- }
-}
-
-unsafe impl stable_deref_trait::StableDeref for MmapWrapper {}