Changeset View
Changeset View
Standalone View
Standalone View
rust/hg-cpython/src/dirstate/owning.rs
Show First 20 Lines • Show All 43 Lines • ▼ Show 20 Line(s) | ) -> Result<(Self, Option<DirstateParents>), DirstateError> { | ||||
Ok((Self { on_disk, ptr }, parents)) | Ok((Self { on_disk, ptr }, parents)) | ||||
} | } | ||||
pub fn new_v2( | pub fn new_v2( | ||||
py: Python, | py: Python, | ||||
on_disk: PyBytes, | on_disk: PyBytes, | ||||
data_size: usize, | data_size: usize, | ||||
tree_metadata: PyBytes, | |||||
) -> Result<Self, DirstateError> { | ) -> Result<Self, DirstateError> { | ||||
let bytes: &'_ [u8] = on_disk.data(py); | let bytes: &'_ [u8] = on_disk.data(py); | ||||
let map = DirstateMap::new_v2(bytes, data_size)?; | let map = | ||||
DirstateMap::new_v2(bytes, data_size, tree_metadata.data(py))?; | |||||
// Like in `bytes` above, this `'_` lifetime parameter borrows from | // Like in `bytes` above, this `'_` lifetime parameter borrows from | ||||
// the bytes buffer owned by `on_disk`. | // the bytes buffer owned by `on_disk`. | ||||
let ptr: *mut DirstateMap<'_> = Box::into_raw(Box::new(map)); | let ptr: *mut DirstateMap<'_> = Box::into_raw(Box::new(map)); | ||||
// Erase the pointed type entirely in order to erase the lifetime. | // Erase the pointed type entirely in order to erase the lifetime. | ||||
let ptr: *mut () = ptr.cast(); | let ptr: *mut () = ptr.cast(); | ||||
▲ Show 20 Lines • Show All 53 Lines • Show Last 20 Lines |