rust/hg-core/src/repo.rs
changeset 47981 d1d9510f73f0
parent 47969 87e3f878e65f
child 48069 3d0a9c6e614d
equal deleted inserted replaced
47976:2018753014be 47981:d1d9510f73f0
   288             let mut map = if let Some(data_mmap) = self
   288             let mut map = if let Some(data_mmap) = self
   289                 .hg_vfs()
   289                 .hg_vfs()
   290                 .mmap_open(docket.data_filename())
   290                 .mmap_open(docket.data_filename())
   291                 .io_not_found_as_none()?
   291                 .io_not_found_as_none()?
   292             {
   292             {
   293                 OwningDirstateMap::new_empty(MmapWrapper(data_mmap))
   293                 OwningDirstateMap::new_empty(data_mmap)
   294             } else {
   294             } else {
   295                 OwningDirstateMap::new_empty(Vec::new())
   295                 OwningDirstateMap::new_empty(Vec::new())
   296             };
   296             };
   297             let (on_disk, placeholder) = map.get_mut_pair();
   297             let (on_disk, placeholder) = map.get_mut_pair();
   298             *placeholder = DirstateMap::new_v2(on_disk, data_size, metadata)?;
   298             *placeholder = DirstateMap::new_v2(on_disk, data_size, metadata)?;
   405             *borrowed = Some((self.init)(repo)?);
   405             *borrowed = Some((self.init)(repo)?);
   406         }
   406         }
   407         Ok(RefMut::map(borrowed, |option| option.as_mut().unwrap()))
   407         Ok(RefMut::map(borrowed, |option| option.as_mut().unwrap()))
   408     }
   408     }
   409 }
   409 }
   410 
       
   411 // TODO: remove this when https://github.com/RazrFalcon/memmap2-rs/pull/22 is on crates.io
       
   412 struct MmapWrapper(memmap2::Mmap);
       
   413 
       
   414 impl std::ops::Deref for MmapWrapper {
       
   415     type Target = [u8];
       
   416 
       
   417     fn deref(&self) -> &[u8] {
       
   418         self.0.deref()
       
   419     }
       
   420 }
       
   421 
       
   422 unsafe impl stable_deref_trait::StableDeref for MmapWrapper {}