comparison rust/hg-cpython/src/dirstate/dirstate_map.rs @ 48044:d5528ac9b4f2

dirstate: Use the Rust implementation of DirstateItem when Rust is enabled … instead of the C implementation, with C/Rust conversions at the FFI boundary Differential Revision: https://phab.mercurial-scm.org/D11486
author Simon Sapin <simon.sapin@octobus.net>
date Wed, 22 Sep 2021 11:33:29 +0200
parents cedfe2606adf
children 32ef647821b2
comparison
equal deleted inserted replaced
48043:3e69bef2031a 48044:d5528ac9b4f2
17 UnsafePyLeaked, 17 UnsafePyLeaked,
18 }; 18 };
19 19
20 use crate::{ 20 use crate::{
21 dirstate::copymap::{CopyMap, CopyMapItemsIterator, CopyMapKeysIterator}, 21 dirstate::copymap::{CopyMap, CopyMapItemsIterator, CopyMapKeysIterator},
22 dirstate::make_dirstate_item, 22 dirstate::item::DirstateItem,
23 dirstate::non_normal_entries::{ 23 dirstate::non_normal_entries::{
24 NonNormalEntries, NonNormalEntriesIterator, 24 NonNormalEntries, NonNormalEntriesIterator,
25 }, 25 },
26 pybytes_deref::PyBytesDeref, 26 pybytes_deref::PyBytesDeref,
27 }; 27 };
121 .borrow() 121 .borrow()
122 .get(HgPath::new(key.data(py))) 122 .get(HgPath::new(key.data(py)))
123 .map_err(|e| v2_error(py, e))? 123 .map_err(|e| v2_error(py, e))?
124 { 124 {
125 Some(entry) => { 125 Some(entry) => {
126 Ok(Some(make_dirstate_item(py, &entry)?)) 126 Ok(Some(DirstateItem::new_as_pyobject(py, entry)?))
127 }, 127 },
128 None => Ok(default) 128 None => Ok(default)
129 } 129 }
130 } 130 }
131 131
448 .borrow() 448 .borrow()
449 .get(key) 449 .get(key)
450 .map_err(|e| v2_error(py, e))? 450 .map_err(|e| v2_error(py, e))?
451 { 451 {
452 Some(entry) => { 452 Some(entry) => {
453 Ok(make_dirstate_item(py, &entry)?) 453 Ok(DirstateItem::new_as_pyobject(py, entry)?)
454 }, 454 },
455 None => Err(PyErr::new::<exc::KeyError, _>( 455 None => Err(PyErr::new::<exc::KeyError, _>(
456 py, 456 py,
457 String::from_utf8_lossy(key.as_bytes()), 457 String::from_utf8_lossy(key.as_bytes()),
458 )), 458 )),
637 res: Result<(&HgPath, DirstateEntry), DirstateV2ParseError>, 637 res: Result<(&HgPath, DirstateEntry), DirstateV2ParseError>,
638 ) -> PyResult<Option<(PyBytes, PyObject)>> { 638 ) -> PyResult<Option<(PyBytes, PyObject)>> {
639 let (f, entry) = res.map_err(|e| v2_error(py, e))?; 639 let (f, entry) = res.map_err(|e| v2_error(py, e))?;
640 Ok(Some(( 640 Ok(Some((
641 PyBytes::new(py, f.as_bytes()), 641 PyBytes::new(py, f.as_bytes()),
642 make_dirstate_item(py, &entry)?, 642 DirstateItem::new_as_pyobject(py, entry)?,
643 ))) 643 )))
644 } 644 }
645 } 645 }
646 646
647 py_shared_iterator!( 647 py_shared_iterator!(