equal
deleted
inserted
replaced
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 {} |
|