# HG changeset patch # User Simon Sapin # Date 1631861832 -7200 # Node ID d1d9510f73f022a50902636a73b6fc9b9a6d1eb8 # Parent 2018753014becef7df8d01aef5ef0733b7eb5c3e 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 diff -r 2018753014be -r d1d9510f73f0 rust/Cargo.lock --- 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]] diff -r 2018753014be -r d1d9510f73f0 rust/hg-core/Cargo.toml --- 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" diff -r 2018753014be -r d1d9510f73f0 rust/hg-core/src/repo.rs --- 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 {}