Mercurial > hg
diff rust/hg-core/src/revlog/index.rs @ 51233:ca81cd96000a
rust-index: add Sync bound to all relevant mmap-derived values
All readonly mmaps are Sync as far as Rust is concerned. Integrity of the
mmap'ed file is a concern separate to Rust's memory model, since it requires
out-of-program handling via locks, etc.
This will help when we start sharing the Rust Index with Python.
author | Raphaël Gomès <rgomes@octobus.net> |
---|---|
date | Thu, 26 Oct 2023 15:26:19 +0200 |
parents | 1b23aaf5eb7b |
children | 59183a19954e |
line wrap: on
line diff
--- a/rust/hg-core/src/revlog/index.rs Tue Oct 31 18:09:43 2023 +0100 +++ b/rust/hg-core/src/revlog/index.rs Thu Oct 26 15:26:19 2023 +0200 @@ -85,7 +85,7 @@ /// happened. This makes it transparent for the callers. struct IndexData { /// Immutable bytes, most likely taken from disk - bytes: Box<dyn Deref<Target = [u8]> + Send>, + bytes: Box<dyn Deref<Target = [u8]> + Send + Sync>, /// Used when stripping index contents, keeps track of the start of the /// first stripped revision, which is used to give a slice of the /// `bytes` field. @@ -95,7 +95,7 @@ } impl IndexData { - pub fn new(bytes: Box<dyn Deref<Target = [u8]> + Send>) -> Self { + pub fn new(bytes: Box<dyn Deref<Target = [u8]> + Send + Sync>) -> Self { Self { bytes, truncation: None, @@ -328,7 +328,7 @@ /// Create an index from bytes. /// Calculate the start of each entry when is_inline is true. pub fn new( - bytes: Box<dyn Deref<Target = [u8]> + Send>, + bytes: Box<dyn Deref<Target = [u8]> + Send + Sync>, default_header: IndexHeader, ) -> Result<Self, HgError> { let header =